From b09e5d9855b20630eb15da2b7b1fbb339c40f2a9 Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Thu, 2 Feb 2017 23:00:21 +0900 Subject: [PATCH] add initial code for S1AP encoder/decoder --- configure.ac | 8 +- lib/Makefile.am | 2 +- lib/asn/Makefile.am | 33 + lib/asn/README | 19 + lib/asn/asn1c/ANY.c | 243 + lib/asn/asn1c/ANY.h | 51 + lib/asn/asn1c/BIT_STRING.c | 191 + lib/asn/asn1c/BIT_STRING.h | 33 + lib/asn/asn1c/BOOLEAN.c | 328 + lib/asn/asn1c/BOOLEAN.h | 38 + lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.c | 927 ++ lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.h | 108 + .../asn1c/E-RAB-S1ap-IE-ContainerPairList.c | 9 + .../asn1c/E-RAB-S1ap-IE-ContainerPairList.h | 23 + lib/asn/asn1c/INTEGER.c | 1492 ++ lib/asn/asn1c/INTEGER.h | 88 + lib/asn/asn1c/Makefile.am | 827 ++ lib/asn/asn1c/NULL.c | 195 + lib/asn/asn1c/NULL.h | 35 + lib/asn/asn1c/NativeEnumerated.c | 332 + lib/asn/asn1c/NativeEnumerated.h | 34 + lib/asn/asn1c/NativeInteger.c | 396 + lib/asn/asn1c/NativeInteger.h | 39 + lib/asn/asn1c/OBJECT_IDENTIFIER.c | 766 ++ lib/asn/asn1c/OBJECT_IDENTIFIER.h | 139 + lib/asn/asn1c/OCTET_STRING.c | 2164 +++ lib/asn/asn1c/OCTET_STRING.h | 88 + lib/asn/asn1c/PrintableString.c | 111 + lib/asn/asn1c/PrintableString.h | 24 + lib/asn/asn1c/PrivateIE-Container.c | 60 + lib/asn/asn1c/PrivateIE-Container.h | 44 + lib/asn/asn1c/PrivateIE-Field.c | 154 + lib/asn/asn1c/PrivateIE-Field.h | 42 + .../ProtocolError-S1ap-IE-ContainerList.c | 9 + .../ProtocolError-S1ap-IE-ContainerList.h | 23 + lib/asn/asn1c/ProtocolExtensionContainer.c | 3885 ++++++ lib/asn/asn1c/ProtocolExtensionContainer.h | 569 + lib/asn/asn1c/ProtocolExtensionField.c | 11485 ++++++++++++++++ lib/asn/asn1c/ProtocolExtensionField.h | 717 + lib/asn/asn1c/ProtocolIE-Container.c | 9 + lib/asn/asn1c/ProtocolIE-Container.h | 23 + lib/asn/asn1c/ProtocolIE-ContainerList.c | 60 + lib/asn/asn1c/ProtocolIE-ContainerList.h | 44 + lib/asn/asn1c/ProtocolIE-ContainerPair.c | 9 + lib/asn/asn1c/ProtocolIE-ContainerPair.h | 23 + lib/asn/asn1c/ProtocolIE-ContainerPairList.c | 9 + lib/asn/asn1c/ProtocolIE-ContainerPairList.h | 23 + lib/asn/asn1c/ProtocolIE-Field.c | 160 + lib/asn/asn1c/ProtocolIE-Field.h | 42 + lib/asn/asn1c/ProtocolIE-FieldPair.c | 9 + lib/asn/asn1c/ProtocolIE-FieldPair.h | 23 + lib/asn/asn1c/ProtocolIE-SingleContainer.c | 1899 +++ lib/asn/asn1c/ProtocolIE-SingleContainer.h | 212 + lib/asn/asn1c/S1AP-PDU.c | 83 + lib/asn/asn1c/S1AP-PDU.h | 59 + .../S1ap-AllocationAndRetentionPriority.c | 94 + .../S1ap-AllocationAndRetentionPriority.h | 53 + lib/asn/asn1c/S1ap-AreaScopeOfMDT.c | 83 + lib/asn/asn1c/S1ap-AreaScopeOfMDT.h | 59 + lib/asn/asn1c/S1ap-BPLMNs.c | 60 + lib/asn/asn1c/S1ap-BPLMNs.h | 39 + ...1ap-Bearers-SubjectToStatusTransfer-Item.c | 104 + ...1ap-Bearers-SubjectToStatusTransfer-Item.h | 54 + ...S1ap-Bearers-SubjectToStatusTransferList.c | 60 + ...S1ap-Bearers-SubjectToStatusTransferList.h | 44 + lib/asn/asn1c/S1ap-BitRate.c | 172 + lib/asn/asn1c/S1ap-BitRate.h | 43 + .../asn1c/S1ap-BroadcastCancelledAreaList.c | 83 + .../asn1c/S1ap-BroadcastCancelledAreaList.h | 59 + .../asn1c/S1ap-BroadcastCompletedAreaList.c | 83 + .../asn1c/S1ap-BroadcastCompletedAreaList.h | 59 + lib/asn/asn1c/S1ap-CGI.c | 104 + lib/asn/asn1c/S1ap-CGI.h | 55 + lib/asn/asn1c/S1ap-CI.c | 167 + lib/asn/asn1c/S1ap-CI.h | 43 + lib/asn/asn1c/S1ap-CNDomain.c | 166 + lib/asn/asn1c/S1ap-CNDomain.h | 49 + lib/asn/asn1c/S1ap-COUNTvalue.c | 84 + lib/asn/asn1c/S1ap-COUNTvalue.h | 51 + lib/asn/asn1c/S1ap-CSFallbackIndicator.c | 168 + lib/asn/asn1c/S1ap-CSFallbackIndicator.h | 52 + lib/asn/asn1c/S1ap-CSG-Id.c | 172 + lib/asn/asn1c/S1ap-CSG-Id.h | 43 + lib/asn/asn1c/S1ap-CSG-IdList-Item.c | 74 + lib/asn/asn1c/S1ap-CSG-IdList-Item.h | 49 + lib/asn/asn1c/S1ap-CSG-IdList.c | 60 + lib/asn/asn1c/S1ap-CSG-IdList.h | 44 + lib/asn/asn1c/S1ap-CSGMembershipStatus.c | 166 + lib/asn/asn1c/S1ap-CSGMembershipStatus.h | 49 + lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.c | 84 + lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.h | 51 + lib/asn/asn1c/S1ap-CancelledCellinEAI.c | 60 + lib/asn/asn1c/S1ap-CancelledCellinEAI.h | 44 + lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.c | 84 + lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.h | 51 + lib/asn/asn1c/S1ap-CancelledCellinTAI.c | 60 + lib/asn/asn1c/S1ap-CancelledCellinTAI.h | 44 + lib/asn/asn1c/S1ap-Cause.c | 103 + lib/asn/asn1c/S1ap-Cause.h | 65 + lib/asn/asn1c/S1ap-CauseMisc.c | 176 + lib/asn/asn1c/S1ap-CauseMisc.h | 56 + lib/asn/asn1c/S1ap-CauseNas.c | 174 + lib/asn/asn1c/S1ap-CauseNas.h | 55 + lib/asn/asn1c/S1ap-CauseProtocol.c | 178 + lib/asn/asn1c/S1ap-CauseProtocol.h | 57 + lib/asn/asn1c/S1ap-CauseRadioNetwork.c | 242 + lib/asn/asn1c/S1ap-CauseRadioNetwork.h | 89 + lib/asn/asn1c/S1ap-CauseTransport.c | 168 + lib/asn/asn1c/S1ap-CauseTransport.h | 52 + .../asn1c/S1ap-Cdma2000HORequiredIndication.c | 166 + .../asn1c/S1ap-Cdma2000HORequiredIndication.h | 51 + lib/asn/asn1c/S1ap-Cdma2000HOStatus.c | 168 + lib/asn/asn1c/S1ap-Cdma2000HOStatus.h | 52 + lib/asn/asn1c/S1ap-Cdma2000OneXMEID.c | 144 + lib/asn/asn1c/S1ap-Cdma2000OneXMEID.h | 43 + lib/asn/asn1c/S1ap-Cdma2000OneXMSI.c | 144 + lib/asn/asn1c/S1ap-Cdma2000OneXMSI.h | 43 + lib/asn/asn1c/S1ap-Cdma2000OneXPilot.c | 144 + lib/asn/asn1c/S1ap-Cdma2000OneXPilot.h | 43 + lib/asn/asn1c/S1ap-Cdma2000OneXRAND.c | 144 + lib/asn/asn1c/S1ap-Cdma2000OneXRAND.h | 43 + lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.c | 94 + lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.h | 53 + lib/asn/asn1c/S1ap-Cdma2000PDU.c | 144 + lib/asn/asn1c/S1ap-Cdma2000PDU.h | 43 + lib/asn/asn1c/S1ap-Cdma2000RATType.c | 168 + lib/asn/asn1c/S1ap-Cdma2000RATType.h | 52 + lib/asn/asn1c/S1ap-Cdma2000SectorID.c | 144 + lib/asn/asn1c/S1ap-Cdma2000SectorID.h | 43 + lib/asn/asn1c/S1ap-Cell-Size.c | 172 + lib/asn/asn1c/S1ap-Cell-Size.h | 54 + lib/asn/asn1c/S1ap-CellAccessMode.c | 166 + lib/asn/asn1c/S1ap-CellAccessMode.h | 51 + lib/asn/asn1c/S1ap-CellBasedMDT.c | 74 + lib/asn/asn1c/S1ap-CellBasedMDT.h | 49 + lib/asn/asn1c/S1ap-CellID-Broadcast-Item.c | 74 + lib/asn/asn1c/S1ap-CellID-Broadcast-Item.h | 49 + lib/asn/asn1c/S1ap-CellID-Broadcast.c | 60 + lib/asn/asn1c/S1ap-CellID-Broadcast.h | 44 + lib/asn/asn1c/S1ap-CellID-Cancelled-Item.c | 84 + lib/asn/asn1c/S1ap-CellID-Cancelled-Item.h | 51 + lib/asn/asn1c/S1ap-CellID-Cancelled.c | 60 + lib/asn/asn1c/S1ap-CellID-Cancelled.h | 44 + lib/asn/asn1c/S1ap-CellIdListforMDT.c | 60 + lib/asn/asn1c/S1ap-CellIdListforMDT.h | 44 + lib/asn/asn1c/S1ap-CellIdentity.c | 172 + lib/asn/asn1c/S1ap-CellIdentity.h | 43 + lib/asn/asn1c/S1ap-CellTrafficTrace.c | 146 + lib/asn/asn1c/S1ap-CellTrafficTrace.h | 54 + lib/asn/asn1c/S1ap-CellType.c | 74 + lib/asn/asn1c/S1ap-CellType.h | 49 + lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.c | 74 + lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.h | 49 + lib/asn/asn1c/S1ap-CompletedCellinEAI.c | 60 + lib/asn/asn1c/S1ap-CompletedCellinEAI.h | 44 + lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.c | 74 + lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.h | 49 + lib/asn/asn1c/S1ap-CompletedCellinTAI.c | 60 + lib/asn/asn1c/S1ap-CompletedCellinTAI.h | 44 + .../S1ap-ConcurrentWarningMessageIndicator.c | 164 + .../S1ap-ConcurrentWarningMessageIndicator.h | 48 + lib/asn/asn1c/S1ap-Correlation-ID.c | 167 + lib/asn/asn1c/S1ap-Correlation-ID.h | 43 + lib/asn/asn1c/S1ap-Criticality.c | 168 + lib/asn/asn1c/S1ap-Criticality.h | 50 + .../S1ap-CriticalityDiagnostics-IE-List.c | 60 + .../S1ap-CriticalityDiagnostics-IE-List.h | 44 + ...S1ap-CriticalityDiagnostics-S1ap-IE-Item.c | 94 + ...S1ap-CriticalityDiagnostics-S1ap-IE-Item.h | 53 + lib/asn/asn1c/S1ap-CriticalityDiagnostics.c | 104 + lib/asn/asn1c/S1ap-CriticalityDiagnostics.h | 56 + lib/asn/asn1c/S1ap-DL-Forwarding.c | 166 + lib/asn/asn1c/S1ap-DL-Forwarding.h | 51 + .../asn1c/S1ap-Data-Forwarding-Not-Possible.c | 166 + .../asn1c/S1ap-Data-Forwarding-Not-Possible.h | 51 + lib/asn/asn1c/S1ap-DataCodingScheme.c | 172 + lib/asn/asn1c/S1ap-DataCodingScheme.h | 43 + lib/asn/asn1c/S1ap-DeactivateTrace.c | 146 + lib/asn/asn1c/S1ap-DeactivateTrace.h | 54 + ...S1ap-Direct-Forwarding-Path-Availability.c | 166 + ...S1ap-Direct-Forwarding-Path-Availability.h | 51 + lib/asn/asn1c/S1ap-DownlinkNASTransport.c | 146 + lib/asn/asn1c/S1ap-DownlinkNASTransport.h | 54 + ...1ap-DownlinkNonUEAssociatedLPPaTransport.c | 146 + ...1ap-DownlinkNonUEAssociatedLPPaTransport.h | 54 + .../asn1c/S1ap-DownlinkS1cdma2000tunneling.c | 146 + .../asn1c/S1ap-DownlinkS1cdma2000tunneling.h | 54 + .../S1ap-DownlinkUEAssociatedLPPaTransport.c | 146 + .../S1ap-DownlinkUEAssociatedLPPaTransport.h | 54 + lib/asn/asn1c/S1ap-E-RAB-ID.c | 166 + lib/asn/asn1c/S1ap-E-RAB-ID.h | 43 + lib/asn/asn1c/S1ap-E-RABAdmittedItem.c | 134 + lib/asn/asn1c/S1ap-E-RABAdmittedItem.h | 57 + lib/asn/asn1c/S1ap-E-RABAdmittedList.c | 162 + lib/asn/asn1c/S1ap-E-RABAdmittedList.h | 43 + lib/asn/asn1c/S1ap-E-RABDataForwardingItem.c | 114 + lib/asn/asn1c/S1ap-E-RABDataForwardingItem.h | 55 + .../S1ap-E-RABFailedToSetupItemHOReqAck.c | 84 + .../S1ap-E-RABFailedToSetupItemHOReqAck.h | 51 + .../S1ap-E-RABFailedtoSetupListHOReqAck.c | 162 + .../S1ap-E-RABFailedtoSetupListHOReqAck.h | 43 + lib/asn/asn1c/S1ap-E-RABInformationList.c | 60 + lib/asn/asn1c/S1ap-E-RABInformationList.h | 44 + lib/asn/asn1c/S1ap-E-RABInformationListItem.c | 84 + lib/asn/asn1c/S1ap-E-RABInformationListItem.h | 51 + lib/asn/asn1c/S1ap-E-RABItem.c | 84 + lib/asn/asn1c/S1ap-E-RABItem.h | 51 + lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.c | 94 + lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.h | 54 + lib/asn/asn1c/S1ap-E-RABList.c | 60 + lib/asn/asn1c/S1ap-E-RABList.h | 44 + .../asn1c/S1ap-E-RABModifyItemBearerModRes.c | 74 + .../asn1c/S1ap-E-RABModifyItemBearerModRes.h | 49 + .../asn1c/S1ap-E-RABModifyListBearerModRes.c | 60 + .../asn1c/S1ap-E-RABModifyListBearerModRes.h | 44 + lib/asn/asn1c/S1ap-E-RABModifyRequest.c | 146 + lib/asn/asn1c/S1ap-E-RABModifyRequest.h | 54 + lib/asn/asn1c/S1ap-E-RABModifyResponse.c | 146 + lib/asn/asn1c/S1ap-E-RABModifyResponse.h | 54 + lib/asn/asn1c/S1ap-E-RABReleaseCommand.c | 146 + lib/asn/asn1c/S1ap-E-RABReleaseCommand.h | 54 + lib/asn/asn1c/S1ap-E-RABReleaseIndication.c | 146 + lib/asn/asn1c/S1ap-E-RABReleaseIndication.h | 54 + .../S1ap-E-RABReleaseItemBearerRelComp.c | 74 + .../S1ap-E-RABReleaseItemBearerRelComp.h | 49 + .../S1ap-E-RABReleaseListBearerRelComp.c | 60 + .../S1ap-E-RABReleaseListBearerRelComp.h | 44 + lib/asn/asn1c/S1ap-E-RABReleaseResponse.c | 146 + lib/asn/asn1c/S1ap-E-RABReleaseResponse.h | 54 + .../asn1c/S1ap-E-RABSetupItemBearerSURes.c | 94 + .../asn1c/S1ap-E-RABSetupItemBearerSURes.h | 53 + lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.c | 94 + lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.h | 53 + .../asn1c/S1ap-E-RABSetupListBearerSURes.c | 60 + .../asn1c/S1ap-E-RABSetupListBearerSURes.h | 44 + lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.c | 60 + lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.h | 44 + lib/asn/asn1c/S1ap-E-RABSetupRequest.c | 146 + lib/asn/asn1c/S1ap-E-RABSetupRequest.h | 54 + lib/asn/asn1c/S1ap-E-RABSetupResponse.c | 146 + lib/asn/asn1c/S1ap-E-RABSetupResponse.h | 54 + .../S1ap-E-RABSubjecttoDataForwardingList.c | 162 + .../S1ap-E-RABSubjecttoDataForwardingList.h | 43 + .../S1ap-E-RABToBeModifiedItemBearerModReq.c | 94 + .../S1ap-E-RABToBeModifiedItemBearerModReq.h | 53 + .../S1ap-E-RABToBeModifiedListBearerModReq.c | 60 + .../S1ap-E-RABToBeModifiedListBearerModReq.h | 44 + .../S1ap-E-RABToBeSetupItemBearerSUReq.c | 114 + .../S1ap-E-RABToBeSetupItemBearerSUReq.h | 57 + .../asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.c | 114 + .../asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.h | 57 + lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.c | 104 + lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.h | 55 + .../S1ap-E-RABToBeSetupListBearerSUReq.c | 60 + .../S1ap-E-RABToBeSetupListBearerSUReq.h | 44 + .../asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.c | 60 + .../asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.h | 44 + lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.c | 162 + lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.h | 43 + lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.c | 94 + lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.h | 53 + lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.c | 162 + lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.h | 43 + lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.c | 94 + lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.h | 53 + lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.c | 162 + lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.h | 43 + lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.c | 167 + lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.h | 43 + lib/asn/asn1c/S1ap-ECGIList.c | 60 + lib/asn/asn1c/S1ap-ECGIList.h | 44 + lib/asn/asn1c/S1ap-ENB-ID.c | 145 + lib/asn/asn1c/S1ap-ENB-ID.h | 55 + ...-ENB-StatusTransfer-TransparentContainer.c | 74 + ...-ENB-StatusTransfer-TransparentContainer.h | 49 + lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.c | 166 + lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.h | 43 + lib/asn/asn1c/S1ap-ENBConfigurationTransfer.c | 146 + lib/asn/asn1c/S1ap-ENBConfigurationTransfer.h | 54 + lib/asn/asn1c/S1ap-ENBConfigurationUpdate.c | 146 + lib/asn/asn1c/S1ap-ENBConfigurationUpdate.h | 54 + .../S1ap-ENBConfigurationUpdateAcknowledge.c | 146 + .../S1ap-ENBConfigurationUpdateAcknowledge.h | 54 + .../S1ap-ENBConfigurationUpdateFailure.c | 146 + .../S1ap-ENBConfigurationUpdateFailure.h | 54 + .../asn1c/S1ap-ENBDirectInformationTransfer.c | 146 + .../asn1c/S1ap-ENBDirectInformationTransfer.h | 54 + lib/asn/asn1c/S1ap-ENBStatusTransfer.c | 146 + lib/asn/asn1c/S1ap-ENBStatusTransfer.h | 54 + lib/asn/asn1c/S1ap-ENBX2ExtTLA.c | 84 + lib/asn/asn1c/S1ap-ENBX2ExtTLA.h | 52 + lib/asn/asn1c/S1ap-ENBX2ExtTLAs.c | 60 + lib/asn/asn1c/S1ap-ENBX2ExtTLAs.h | 44 + lib/asn/asn1c/S1ap-ENBX2GTPTLAs.c | 60 + lib/asn/asn1c/S1ap-ENBX2GTPTLAs.h | 39 + lib/asn/asn1c/S1ap-ENBX2TLAs.c | 60 + lib/asn/asn1c/S1ap-ENBX2TLAs.h | 39 + lib/asn/asn1c/S1ap-ENBname.c | 211 + lib/asn/asn1c/S1ap-ENBname.h | 43 + lib/asn/asn1c/S1ap-EPLMNs.c | 60 + lib/asn/asn1c/S1ap-EPLMNs.h | 39 + lib/asn/asn1c/S1ap-EUTRAN-CGI.c | 84 + lib/asn/asn1c/S1ap-EUTRAN-CGI.h | 51 + .../S1ap-EUTRANRoundTripDelayEstimationInfo.c | 166 + .../S1ap-EUTRANRoundTripDelayEstimationInfo.h | 43 + .../S1ap-EmergencyAreaID-Broadcast-Item.c | 84 + .../S1ap-EmergencyAreaID-Broadcast-Item.h | 51 + .../asn1c/S1ap-EmergencyAreaID-Broadcast.c | 60 + .../asn1c/S1ap-EmergencyAreaID-Broadcast.h | 44 + .../S1ap-EmergencyAreaID-Cancelled-Item.c | 84 + .../S1ap-EmergencyAreaID-Cancelled-Item.h | 51 + .../asn1c/S1ap-EmergencyAreaID-Cancelled.c | 60 + .../asn1c/S1ap-EmergencyAreaID-Cancelled.h | 44 + lib/asn/asn1c/S1ap-EmergencyAreaID.c | 167 + lib/asn/asn1c/S1ap-EmergencyAreaID.h | 43 + lib/asn/asn1c/S1ap-EmergencyAreaIDList.c | 60 + lib/asn/asn1c/S1ap-EmergencyAreaIDList.h | 39 + lib/asn/asn1c/S1ap-EncryptionAlgorithms.c | 172 + lib/asn/asn1c/S1ap-EncryptionAlgorithms.h | 43 + lib/asn/asn1c/S1ap-ErrorIndication.c | 146 + lib/asn/asn1c/S1ap-ErrorIndication.h | 54 + lib/asn/asn1c/S1ap-EventType.c | 170 + lib/asn/asn1c/S1ap-EventType.h | 53 + lib/asn/asn1c/S1ap-ExtendedRNC-ID.c | 166 + lib/asn/asn1c/S1ap-ExtendedRNC-ID.h | 43 + lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.c | 166 + lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.h | 43 + lib/asn/asn1c/S1ap-ForbiddenInterRATs.c | 176 + lib/asn/asn1c/S1ap-ForbiddenInterRATs.h | 56 + lib/asn/asn1c/S1ap-ForbiddenLACs.c | 60 + lib/asn/asn1c/S1ap-ForbiddenLACs.h | 39 + lib/asn/asn1c/S1ap-ForbiddenLAs-Item.c | 84 + lib/asn/asn1c/S1ap-ForbiddenLAs-Item.h | 51 + lib/asn/asn1c/S1ap-ForbiddenLAs.c | 60 + lib/asn/asn1c/S1ap-ForbiddenLAs.h | 44 + lib/asn/asn1c/S1ap-ForbiddenTACs.c | 60 + lib/asn/asn1c/S1ap-ForbiddenTACs.h | 39 + lib/asn/asn1c/S1ap-ForbiddenTAs-Item.c | 84 + lib/asn/asn1c/S1ap-ForbiddenTAs-Item.h | 51 + lib/asn/asn1c/S1ap-ForbiddenTAs.c | 60 + lib/asn/asn1c/S1ap-ForbiddenTAs.h | 44 + lib/asn/asn1c/S1ap-GBR-QosInformation.c | 104 + lib/asn/asn1c/S1ap-GBR-QosInformation.h | 52 + lib/asn/asn1c/S1ap-GERAN-Cell-ID.c | 94 + lib/asn/asn1c/S1ap-GERAN-Cell-ID.h | 53 + lib/asn/asn1c/S1ap-GTP-TEID.c | 167 + lib/asn/asn1c/S1ap-GTP-TEID.h | 43 + lib/asn/asn1c/S1ap-GUMMEI.c | 94 + lib/asn/asn1c/S1ap-GUMMEI.h | 53 + lib/asn/asn1c/S1ap-GUMMEIList.c | 60 + lib/asn/asn1c/S1ap-GUMMEIList.h | 44 + .../asn1c/S1ap-GWContextReleaseIndication.c | 166 + .../asn1c/S1ap-GWContextReleaseIndication.h | 51 + lib/asn/asn1c/S1ap-Global-ENB-ID.c | 84 + lib/asn/asn1c/S1ap-Global-ENB-ID.h | 51 + lib/asn/asn1c/S1ap-HFN.c | 166 + lib/asn/asn1c/S1ap-HFN.h | 43 + lib/asn/asn1c/S1ap-HandoverCancel.c | 146 + lib/asn/asn1c/S1ap-HandoverCancel.h | 54 + .../asn1c/S1ap-HandoverCancelAcknowledge.c | 146 + .../asn1c/S1ap-HandoverCancelAcknowledge.h | 54 + lib/asn/asn1c/S1ap-HandoverCommand.c | 146 + lib/asn/asn1c/S1ap-HandoverCommand.h | 54 + lib/asn/asn1c/S1ap-HandoverFailure.c | 146 + lib/asn/asn1c/S1ap-HandoverFailure.h | 54 + lib/asn/asn1c/S1ap-HandoverNotify.c | 146 + lib/asn/asn1c/S1ap-HandoverNotify.h | 54 + .../asn1c/S1ap-HandoverPreparationFailure.c | 146 + .../asn1c/S1ap-HandoverPreparationFailure.h | 54 + lib/asn/asn1c/S1ap-HandoverRequest.c | 146 + lib/asn/asn1c/S1ap-HandoverRequest.h | 54 + .../asn1c/S1ap-HandoverRequestAcknowledge.c | 146 + .../asn1c/S1ap-HandoverRequestAcknowledge.h | 54 + lib/asn/asn1c/S1ap-HandoverRequired.c | 146 + lib/asn/asn1c/S1ap-HandoverRequired.h | 54 + lib/asn/asn1c/S1ap-HandoverRestrictionList.c | 114 + lib/asn/asn1c/S1ap-HandoverRestrictionList.h | 60 + lib/asn/asn1c/S1ap-HandoverType.c | 174 + lib/asn/asn1c/S1ap-HandoverType.h | 55 + lib/asn/asn1c/S1ap-IE.c | 82 + lib/asn/asn1c/S1ap-IE.h | 42 + lib/asn/asn1c/S1ap-IMSI.c | 167 + lib/asn/asn1c/S1ap-IMSI.h | 43 + lib/asn/asn1c/S1ap-ImmediateMDT.c | 104 + lib/asn/asn1c/S1ap-ImmediateMDT.h | 57 + .../asn1c/S1ap-InitialContextSetupFailure.c | 146 + .../asn1c/S1ap-InitialContextSetupFailure.h | 54 + .../asn1c/S1ap-InitialContextSetupRequest.c | 146 + .../asn1c/S1ap-InitialContextSetupRequest.h | 54 + .../asn1c/S1ap-InitialContextSetupResponse.c | 146 + .../asn1c/S1ap-InitialContextSetupResponse.h | 54 + lib/asn/asn1c/S1ap-InitialUEMessage.c | 146 + lib/asn/asn1c/S1ap-InitialUEMessage.h | 54 + lib/asn/asn1c/S1ap-InitiatingMessage.c | 160 + lib/asn/asn1c/S1ap-InitiatingMessage.h | 42 + .../S1ap-IntegrityProtectionAlgorithms.c | 172 + .../S1ap-IntegrityProtectionAlgorithms.h | 43 + ...S1ap-Inter-SystemInformationTransferType.c | 63 + ...S1ap-Inter-SystemInformationTransferType.h | 53 + lib/asn/asn1c/S1ap-InterfacesToTrace.c | 172 + lib/asn/asn1c/S1ap-InterfacesToTrace.h | 43 + lib/asn/asn1c/S1ap-KillRequest.c | 146 + lib/asn/asn1c/S1ap-KillRequest.h | 54 + lib/asn/asn1c/S1ap-KillResponse.c | 146 + lib/asn/asn1c/S1ap-KillResponse.h | 54 + lib/asn/asn1c/S1ap-L3-Information.c | 144 + lib/asn/asn1c/S1ap-L3-Information.h | 43 + lib/asn/asn1c/S1ap-LAC.c | 167 + lib/asn/asn1c/S1ap-LAC.h | 43 + lib/asn/asn1c/S1ap-LAI.c | 84 + lib/asn/asn1c/S1ap-LAI.h | 51 + lib/asn/asn1c/S1ap-LPPa-PDU.c | 144 + lib/asn/asn1c/S1ap-LPPa-PDU.h | 43 + lib/asn/asn1c/S1ap-LastVisitedCell-Item.c | 83 + lib/asn/asn1c/S1ap-LastVisitedCell-Item.h | 59 + .../S1ap-LastVisitedEUTRANCellInformation.c | 94 + .../S1ap-LastVisitedEUTRANCellInformation.h | 53 + .../S1ap-LastVisitedGERANCellInformation.c | 63 + .../S1ap-LastVisitedGERANCellInformation.h | 53 + .../S1ap-LastVisitedUTRANCellInformation.c | 144 + .../S1ap-LastVisitedUTRANCellInformation.h | 43 + lib/asn/asn1c/S1ap-LocationReport.c | 146 + lib/asn/asn1c/S1ap-LocationReport.h | 54 + lib/asn/asn1c/S1ap-LocationReportingControl.c | 146 + lib/asn/asn1c/S1ap-LocationReportingControl.h | 54 + .../S1ap-LocationReportingFailureIndication.c | 146 + .../S1ap-LocationReportingFailureIndication.h | 54 + lib/asn/asn1c/S1ap-LoggedMDT.c | 84 + lib/asn/asn1c/S1ap-LoggedMDT.h | 51 + lib/asn/asn1c/S1ap-LoggingDuration.c | 174 + lib/asn/asn1c/S1ap-LoggingDuration.h | 53 + lib/asn/asn1c/S1ap-LoggingInterval.c | 178 + lib/asn/asn1c/S1ap-LoggingInterval.h | 55 + lib/asn/asn1c/S1ap-M-TMSI.c | 167 + lib/asn/asn1c/S1ap-M-TMSI.h | 43 + lib/asn/asn1c/S1ap-MDT-Activation.c | 170 + lib/asn/asn1c/S1ap-MDT-Activation.h | 53 + lib/asn/asn1c/S1ap-MDT-Configuration.c | 94 + lib/asn/asn1c/S1ap-MDT-Configuration.h | 53 + lib/asn/asn1c/S1ap-MDTMode.c | 73 + lib/asn/asn1c/S1ap-MDTMode.h | 56 + lib/asn/asn1c/S1ap-MME-Code.c | 167 + lib/asn/asn1c/S1ap-MME-Code.h | 43 + lib/asn/asn1c/S1ap-MME-Group-ID.c | 167 + lib/asn/asn1c/S1ap-MME-Group-ID.h | 43 + lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.c | 162 + lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.h | 43 + lib/asn/asn1c/S1ap-MMEConfigurationTransfer.c | 146 + lib/asn/asn1c/S1ap-MMEConfigurationTransfer.h | 54 + lib/asn/asn1c/S1ap-MMEConfigurationUpdate.c | 146 + lib/asn/asn1c/S1ap-MMEConfigurationUpdate.h | 54 + .../S1ap-MMEConfigurationUpdateAcknowledge.c | 146 + .../S1ap-MMEConfigurationUpdateAcknowledge.h | 54 + .../S1ap-MMEConfigurationUpdateFailure.c | 146 + .../S1ap-MMEConfigurationUpdateFailure.h | 54 + .../asn1c/S1ap-MMEDirectInformationTransfer.c | 146 + .../asn1c/S1ap-MMEDirectInformationTransfer.h | 54 + lib/asn/asn1c/S1ap-MMERelaySupportIndicator.c | 166 + lib/asn/asn1c/S1ap-MMERelaySupportIndicator.h | 51 + lib/asn/asn1c/S1ap-MMEStatusTransfer.c | 146 + lib/asn/asn1c/S1ap-MMEStatusTransfer.h | 54 + lib/asn/asn1c/S1ap-MMEname.c | 211 + lib/asn/asn1c/S1ap-MMEname.h | 43 + lib/asn/asn1c/S1ap-MSClassmark2.c | 144 + lib/asn/asn1c/S1ap-MSClassmark2.h | 43 + lib/asn/asn1c/S1ap-MSClassmark3.c | 144 + lib/asn/asn1c/S1ap-MSClassmark3.h | 43 + .../asn1c/S1ap-ManagementBasedMDTAllowed.c | 166 + .../asn1c/S1ap-ManagementBasedMDTAllowed.h | 51 + lib/asn/asn1c/S1ap-MeasurementThresholdA2.c | 73 + lib/asn/asn1c/S1ap-MeasurementThresholdA2.h | 56 + lib/asn/asn1c/S1ap-MeasurementsToActivate.c | 172 + lib/asn/asn1c/S1ap-MeasurementsToActivate.h | 43 + lib/asn/asn1c/S1ap-MessageIdentifier.c | 172 + lib/asn/asn1c/S1ap-MessageIdentifier.h | 43 + lib/asn/asn1c/S1ap-NAS-PDU.c | 144 + lib/asn/asn1c/S1ap-NAS-PDU.h | 43 + lib/asn/asn1c/S1ap-NASNonDeliveryIndication.c | 146 + lib/asn/asn1c/S1ap-NASNonDeliveryIndication.h | 54 + .../S1ap-NASSecurityParametersfromE-UTRAN.c | 144 + .../S1ap-NASSecurityParametersfromE-UTRAN.h | 43 + .../S1ap-NASSecurityParameterstoE-UTRAN.c | 144 + .../S1ap-NASSecurityParameterstoE-UTRAN.h | 43 + lib/asn/asn1c/S1ap-NumberOfBroadcasts.c | 166 + lib/asn/asn1c/S1ap-NumberOfBroadcasts.h | 43 + lib/asn/asn1c/S1ap-NumberofBroadcastRequest.c | 166 + lib/asn/asn1c/S1ap-NumberofBroadcastRequest.h | 43 + .../asn1c/S1ap-OldBSS-ToNewBSS-Information.c | 144 + .../asn1c/S1ap-OldBSS-ToNewBSS-Information.h | 43 + lib/asn/asn1c/S1ap-OverloadAction.c | 174 + lib/asn/asn1c/S1ap-OverloadAction.h | 55 + lib/asn/asn1c/S1ap-OverloadResponse.c | 63 + lib/asn/asn1c/S1ap-OverloadResponse.h | 53 + lib/asn/asn1c/S1ap-OverloadStart.c | 146 + lib/asn/asn1c/S1ap-OverloadStart.h | 54 + lib/asn/asn1c/S1ap-OverloadStop.c | 146 + lib/asn/asn1c/S1ap-OverloadStop.h | 54 + lib/asn/asn1c/S1ap-PDCP-SN.c | 166 + lib/asn/asn1c/S1ap-PDCP-SN.h | 43 + lib/asn/asn1c/S1ap-PLMNidentity.c | 162 + lib/asn/asn1c/S1ap-PLMNidentity.h | 43 + lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.c | 166 + lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.h | 51 + lib/asn/asn1c/S1ap-Paging.c | 146 + lib/asn/asn1c/S1ap-Paging.h | 54 + lib/asn/asn1c/S1ap-PagingDRX.c | 172 + lib/asn/asn1c/S1ap-PagingDRX.h | 54 + lib/asn/asn1c/S1ap-PagingPriority.c | 180 + lib/asn/asn1c/S1ap-PagingPriority.h | 58 + lib/asn/asn1c/S1ap-PathSwitchRequest.c | 146 + lib/asn/asn1c/S1ap-PathSwitchRequest.h | 54 + .../asn1c/S1ap-PathSwitchRequestAcknowledge.c | 146 + .../asn1c/S1ap-PathSwitchRequestAcknowledge.h | 54 + lib/asn/asn1c/S1ap-PathSwitchRequestFailure.c | 146 + lib/asn/asn1c/S1ap-PathSwitchRequestFailure.h | 54 + lib/asn/asn1c/S1ap-PeriodicReportingMDT.c | 84 + lib/asn/asn1c/S1ap-PeriodicReportingMDT.h | 51 + lib/asn/asn1c/S1ap-Pre-emptionCapability.c | 166 + lib/asn/asn1c/S1ap-Pre-emptionCapability.h | 49 + lib/asn/asn1c/S1ap-Pre-emptionVulnerability.c | 166 + lib/asn/asn1c/S1ap-Pre-emptionVulnerability.h | 49 + lib/asn/asn1c/S1ap-Presence.c | 168 + lib/asn/asn1c/S1ap-Presence.h | 50 + lib/asn/asn1c/S1ap-PriorityLevel.c | 166 + lib/asn/asn1c/S1ap-PriorityLevel.h | 51 + lib/asn/asn1c/S1ap-PrivacyIndicator.c | 168 + lib/asn/asn1c/S1ap-PrivacyIndicator.h | 52 + lib/asn/asn1c/S1ap-PrivateIE-ID.c | 103 + lib/asn/asn1c/S1ap-PrivateIE-ID.h | 50 + lib/asn/asn1c/S1ap-PrivateMessage.c | 62 + lib/asn/asn1c/S1ap-PrivateMessage.h | 42 + lib/asn/asn1c/S1ap-ProcedureCode.c | 166 + lib/asn/asn1c/S1ap-ProcedureCode.h | 43 + lib/asn/asn1c/S1ap-ProtocolExtensionID.c | 166 + lib/asn/asn1c/S1ap-ProtocolExtensionID.h | 43 + lib/asn/asn1c/S1ap-ProtocolIE-ID.c | 166 + lib/asn/asn1c/S1ap-ProtocolIE-ID.h | 43 + lib/asn/asn1c/S1ap-QCI.c | 166 + lib/asn/asn1c/S1ap-QCI.h | 43 + lib/asn/asn1c/S1ap-RAC.c | 167 + lib/asn/asn1c/S1ap-RAC.h | 43 + lib/asn/asn1c/S1ap-RIMInformation.c | 144 + lib/asn/asn1c/S1ap-RIMInformation.h | 43 + lib/asn/asn1c/S1ap-RIMRoutingAddress.c | 73 + lib/asn/asn1c/S1ap-RIMRoutingAddress.h | 55 + lib/asn/asn1c/S1ap-RIMTransfer.c | 84 + lib/asn/asn1c/S1ap-RIMTransfer.h | 52 + lib/asn/asn1c/S1ap-RNC-ID.c | 166 + lib/asn/asn1c/S1ap-RNC-ID.h | 43 + lib/asn/asn1c/S1ap-RRC-Container.c | 144 + lib/asn/asn1c/S1ap-RRC-Container.h | 43 + lib/asn/asn1c/S1ap-RRC-Establishment-Cause.c | 176 + lib/asn/asn1c/S1ap-RRC-Establishment-Cause.h | 56 + .../asn1c/S1ap-ReceiveStatusofULPDCPSDUs.c | 172 + .../asn1c/S1ap-ReceiveStatusofULPDCPSDUs.h | 43 + lib/asn/asn1c/S1ap-RelativeMMECapacity.c | 166 + lib/asn/asn1c/S1ap-RelativeMMECapacity.h | 43 + lib/asn/asn1c/S1ap-RelayNode-Indicator.c | 166 + lib/asn/asn1c/S1ap-RelayNode-Indicator.h | 51 + lib/asn/asn1c/S1ap-RepetitionPeriod.c | 166 + lib/asn/asn1c/S1ap-RepetitionPeriod.h | 43 + lib/asn/asn1c/S1ap-ReportAmountMDT.c | 178 + lib/asn/asn1c/S1ap-ReportAmountMDT.h | 55 + lib/asn/asn1c/S1ap-ReportArea.c | 166 + lib/asn/asn1c/S1ap-ReportArea.h | 51 + lib/asn/asn1c/S1ap-ReportIntervalMDT.c | 188 + lib/asn/asn1c/S1ap-ReportIntervalMDT.h | 60 + lib/asn/asn1c/S1ap-ReportingTriggerMDT.c | 168 + lib/asn/asn1c/S1ap-ReportingTriggerMDT.h | 52 + lib/asn/asn1c/S1ap-RequestType.c | 84 + lib/asn/asn1c/S1ap-RequestType.h | 51 + lib/asn/asn1c/S1ap-Reset.c | 146 + lib/asn/asn1c/S1ap-Reset.h | 54 + lib/asn/asn1c/S1ap-ResetAcknowledge.c | 146 + lib/asn/asn1c/S1ap-ResetAcknowledge.h | 54 + lib/asn/asn1c/S1ap-ResetAll.c | 166 + lib/asn/asn1c/S1ap-ResetAll.h | 51 + lib/asn/asn1c/S1ap-ResetType.c | 73 + lib/asn/asn1c/S1ap-ResetType.h | 56 + lib/asn/asn1c/S1ap-Routing-ID.c | 166 + lib/asn/asn1c/S1ap-Routing-ID.h | 43 + lib/asn/asn1c/S1ap-S-TMSI.c | 84 + lib/asn/asn1c/S1ap-S-TMSI.h | 51 + lib/asn/asn1c/S1ap-S1SetupFailure.c | 146 + lib/asn/asn1c/S1ap-S1SetupFailure.h | 54 + lib/asn/asn1c/S1ap-S1SetupRequest.c | 146 + lib/asn/asn1c/S1ap-S1SetupRequest.h | 54 + lib/asn/asn1c/S1ap-S1SetupResponse.c | 146 + lib/asn/asn1c/S1ap-S1SetupResponse.h | 54 + lib/asn/asn1c/S1ap-SONConfigurationTransfer.c | 94 + lib/asn/asn1c/S1ap-SONConfigurationTransfer.h | 53 + lib/asn/asn1c/S1ap-SONInformation.c | 73 + lib/asn/asn1c/S1ap-SONInformation.h | 56 + lib/asn/asn1c/S1ap-SONInformationReply.c | 74 + lib/asn/asn1c/S1ap-SONInformationReply.h | 50 + lib/asn/asn1c/S1ap-SONInformationRequest.c | 168 + lib/asn/asn1c/S1ap-SONInformationRequest.h | 52 + lib/asn/asn1c/S1ap-SRVCCHOIndication.c | 168 + lib/asn/asn1c/S1ap-SRVCCHOIndication.h | 52 + lib/asn/asn1c/S1ap-SRVCCOperationPossible.c | 166 + lib/asn/asn1c/S1ap-SRVCCOperationPossible.h | 51 + lib/asn/asn1c/S1ap-SecurityContext.c | 114 + lib/asn/asn1c/S1ap-SecurityContext.h | 51 + lib/asn/asn1c/S1ap-SecurityKey.c | 172 + lib/asn/asn1c/S1ap-SecurityKey.h | 43 + lib/asn/asn1c/S1ap-SerialNumber.c | 172 + lib/asn/asn1c/S1ap-SerialNumber.h | 43 + lib/asn/asn1c/S1ap-ServedGUMMEIs.c | 60 + lib/asn/asn1c/S1ap-ServedGUMMEIs.h | 44 + lib/asn/asn1c/S1ap-ServedGUMMEIsItem.c | 94 + lib/asn/asn1c/S1ap-ServedGUMMEIsItem.h | 53 + lib/asn/asn1c/S1ap-ServedGroupIDs.c | 60 + lib/asn/asn1c/S1ap-ServedGroupIDs.h | 39 + lib/asn/asn1c/S1ap-ServedMMECs.c | 60 + lib/asn/asn1c/S1ap-ServedMMECs.h | 39 + lib/asn/asn1c/S1ap-ServedPLMNs.c | 60 + lib/asn/asn1c/S1ap-ServedPLMNs.h | 39 + ...1ap-Source-ToTarget-TransparentContainer.c | 144 + ...1ap-Source-ToTarget-TransparentContainer.h | 43 + ...urceBSS-ToTargetBSS-TransparentContainer.c | 144 + ...urceBSS-ToTargetBSS-TransparentContainer.h | 43 + ...urceRNC-ToTargetRNC-TransparentContainer.c | 144 + ...urceRNC-ToTargetRNC-TransparentContainer.h | 43 + lib/asn/asn1c/S1ap-SourceeNB-ID.c | 84 + lib/asn/asn1c/S1ap-SourceeNB-ID.h | 47 + ...urceeNB-ToTargeteNB-TransparentContainer.c | 114 + ...urceeNB-ToTargeteNB-TransparentContainer.h | 58 + lib/asn/asn1c/S1ap-StratumLevel.c | 166 + lib/asn/asn1c/S1ap-StratumLevel.h | 43 + .../asn1c/S1ap-SubscriberProfileIDforRFP.c | 166 + .../asn1c/S1ap-SubscriberProfileIDforRFP.h | 43 + lib/asn/asn1c/S1ap-SuccessfulOutcome.c | 160 + lib/asn/asn1c/S1ap-SuccessfulOutcome.h | 42 + lib/asn/asn1c/S1ap-SupportedTAs-Item.c | 84 + lib/asn/asn1c/S1ap-SupportedTAs-Item.h | 51 + lib/asn/asn1c/S1ap-SupportedTAs.c | 60 + lib/asn/asn1c/S1ap-SupportedTAs.h | 44 + lib/asn/asn1c/S1ap-SynchronizationStatus.c | 168 + lib/asn/asn1c/S1ap-SynchronizationStatus.h | 52 + lib/asn/asn1c/S1ap-TABasedMDT.c | 74 + lib/asn/asn1c/S1ap-TABasedMDT.h | 49 + lib/asn/asn1c/S1ap-TAC.c | 167 + lib/asn/asn1c/S1ap-TAC.h | 43 + lib/asn/asn1c/S1ap-TAI-Broadcast-Item.c | 84 + lib/asn/asn1c/S1ap-TAI-Broadcast-Item.h | 51 + lib/asn/asn1c/S1ap-TAI-Broadcast.c | 60 + lib/asn/asn1c/S1ap-TAI-Broadcast.h | 44 + lib/asn/asn1c/S1ap-TAI-Cancelled-Item.c | 84 + lib/asn/asn1c/S1ap-TAI-Cancelled-Item.h | 51 + lib/asn/asn1c/S1ap-TAI-Cancelled.c | 60 + lib/asn/asn1c/S1ap-TAI-Cancelled.h | 44 + lib/asn/asn1c/S1ap-TAI.c | 84 + lib/asn/asn1c/S1ap-TAI.h | 51 + lib/asn/asn1c/S1ap-TAIItem.c | 74 + lib/asn/asn1c/S1ap-TAIItem.h | 49 + lib/asn/asn1c/S1ap-TAIList.c | 60 + lib/asn/asn1c/S1ap-TAIList.h | 44 + lib/asn/asn1c/S1ap-TAIListforWarning.c | 60 + lib/asn/asn1c/S1ap-TAIListforWarning.h | 44 + lib/asn/asn1c/S1ap-TAListforMDT.c | 60 + lib/asn/asn1c/S1ap-TAListforMDT.h | 39 + lib/asn/asn1c/S1ap-TBCD-STRING.c | 167 + lib/asn/asn1c/S1ap-TBCD-STRING.h | 43 + ...1ap-Target-ToSource-TransparentContainer.c | 144 + ...1ap-Target-ToSource-TransparentContainer.h | 43 + ...rgetBSS-ToSourceBSS-TransparentContainer.c | 144 + ...rgetBSS-ToSourceBSS-TransparentContainer.h | 43 + lib/asn/asn1c/S1ap-TargetID.c | 83 + lib/asn/asn1c/S1ap-TargetID.h | 59 + lib/asn/asn1c/S1ap-TargetRNC-ID.c | 104 + lib/asn/asn1c/S1ap-TargetRNC-ID.h | 55 + ...rgetRNC-ToSourceRNC-TransparentContainer.c | 144 + ...rgetRNC-ToSourceRNC-TransparentContainer.h | 43 + lib/asn/asn1c/S1ap-TargeteNB-ID.c | 84 + lib/asn/asn1c/S1ap-TargeteNB-ID.h | 51 + ...rgeteNB-ToSourceeNB-TransparentContainer.c | 74 + ...rgeteNB-ToSourceeNB-TransparentContainer.h | 49 + lib/asn/asn1c/S1ap-Threshold-RSRP.c | 166 + lib/asn/asn1c/S1ap-Threshold-RSRP.h | 43 + lib/asn/asn1c/S1ap-Threshold-RSRQ.c | 166 + lib/asn/asn1c/S1ap-Threshold-RSRQ.h | 43 + lib/asn/asn1c/S1ap-ThresholdEventA2.c | 74 + lib/asn/asn1c/S1ap-ThresholdEventA2.h | 49 + lib/asn/asn1c/S1ap-Time-UE-StayedInCell.c | 166 + lib/asn/asn1c/S1ap-Time-UE-StayedInCell.h | 43 + lib/asn/asn1c/S1ap-TimeSynchronizationInfo.c | 84 + lib/asn/asn1c/S1ap-TimeSynchronizationInfo.h | 51 + lib/asn/asn1c/S1ap-TimeToWait.c | 176 + lib/asn/asn1c/S1ap-TimeToWait.h | 56 + lib/asn/asn1c/S1ap-TraceActivation.c | 104 + lib/asn/asn1c/S1ap-TraceActivation.h | 55 + lib/asn/asn1c/S1ap-TraceDepth.c | 176 + lib/asn/asn1c/S1ap-TraceDepth.h | 56 + lib/asn/asn1c/S1ap-TraceFailureIndication.c | 146 + lib/asn/asn1c/S1ap-TraceFailureIndication.h | 54 + lib/asn/asn1c/S1ap-TraceStart.c | 146 + lib/asn/asn1c/S1ap-TraceStart.h | 54 + .../S1ap-TrafficLoadReductionIndication.c | 166 + .../S1ap-TrafficLoadReductionIndication.h | 43 + lib/asn/asn1c/S1ap-TransportLayerAddress.c | 172 + lib/asn/asn1c/S1ap-TransportLayerAddress.h | 43 + lib/asn/asn1c/S1ap-TriggeringMessage.c | 168 + lib/asn/asn1c/S1ap-TriggeringMessage.h | 50 + lib/asn/asn1c/S1ap-TypeOfError.c | 168 + lib/asn/asn1c/S1ap-TypeOfError.h | 52 + lib/asn/asn1c/S1ap-UE-HistoryInformation.c | 60 + lib/asn/asn1c/S1ap-UE-HistoryInformation.h | 44 + lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.c | 84 + lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.h | 51 + lib/asn/asn1c/S1ap-UE-S1AP-IDs.c | 73 + lib/asn/asn1c/S1ap-UE-S1AP-IDs.h | 56 + ...ap-UE-associatedLogicalS1-ConnectionItem.c | 84 + ...ap-UE-associatedLogicalS1-ConnectionItem.h | 51 + ...UE-associatedLogicalS1-ConnectionListRes.c | 60 + ...UE-associatedLogicalS1-ConnectionListRes.h | 44 + ...associatedLogicalS1-ConnectionListResAck.c | 60 + ...associatedLogicalS1-ConnectionListResAck.h | 44 + .../asn1c/S1ap-UEAggregateMaximumBitrate.c | 84 + .../asn1c/S1ap-UEAggregateMaximumBitrate.h | 50 + .../asn1c/S1ap-UECapabilityInfoIndication.c | 146 + .../asn1c/S1ap-UECapabilityInfoIndication.h | 54 + .../asn1c/S1ap-UEContextModificationFailure.c | 146 + .../asn1c/S1ap-UEContextModificationFailure.h | 54 + .../asn1c/S1ap-UEContextModificationRequest.c | 146 + .../asn1c/S1ap-UEContextModificationRequest.h | 54 + .../S1ap-UEContextModificationResponse.c | 146 + .../S1ap-UEContextModificationResponse.h | 54 + lib/asn/asn1c/S1ap-UEContextReleaseCommand.c | 146 + lib/asn/asn1c/S1ap-UEContextReleaseCommand.h | 54 + lib/asn/asn1c/S1ap-UEContextReleaseComplete.c | 146 + lib/asn/asn1c/S1ap-UEContextReleaseComplete.h | 54 + lib/asn/asn1c/S1ap-UEContextReleaseRequest.c | 146 + lib/asn/asn1c/S1ap-UEContextReleaseRequest.h | 54 + lib/asn/asn1c/S1ap-UEIdentityIndexValue.c | 172 + lib/asn/asn1c/S1ap-UEIdentityIndexValue.h | 43 + lib/asn/asn1c/S1ap-UEPagingID.c | 73 + lib/asn/asn1c/S1ap-UEPagingID.h | 56 + lib/asn/asn1c/S1ap-UERadioCapability.c | 144 + lib/asn/asn1c/S1ap-UERadioCapability.h | 43 + lib/asn/asn1c/S1ap-UESecurityCapabilities.c | 84 + lib/asn/asn1c/S1ap-UESecurityCapabilities.h | 51 + lib/asn/asn1c/S1ap-UnsuccessfulOutcome.c | 160 + lib/asn/asn1c/S1ap-UnsuccessfulOutcome.h | 42 + lib/asn/asn1c/S1ap-UplinkNASTransport.c | 146 + lib/asn/asn1c/S1ap-UplinkNASTransport.h | 54 + .../S1ap-UplinkNonUEAssociatedLPPaTransport.c | 146 + .../S1ap-UplinkNonUEAssociatedLPPaTransport.h | 54 + .../asn1c/S1ap-UplinkS1cdma2000tunneling.c | 146 + .../asn1c/S1ap-UplinkS1cdma2000tunneling.h | 54 + .../S1ap-UplinkUEAssociatedLPPaTransport.c | 146 + .../S1ap-UplinkUEAssociatedLPPaTransport.h | 54 + lib/asn/asn1c/S1ap-WarningAreaList.c | 83 + lib/asn/asn1c/S1ap-WarningAreaList.h | 59 + lib/asn/asn1c/S1ap-WarningMessageContents.c | 167 + lib/asn/asn1c/S1ap-WarningMessageContents.h | 43 + lib/asn/asn1c/S1ap-WarningSecurityInfo.c | 167 + lib/asn/asn1c/S1ap-WarningSecurityInfo.h | 43 + lib/asn/asn1c/S1ap-WarningType.c | 167 + lib/asn/asn1c/S1ap-WarningType.h | 43 + .../asn1c/S1ap-WriteReplaceWarningRequest.c | 146 + .../asn1c/S1ap-WriteReplaceWarningRequest.h | 54 + .../asn1c/S1ap-WriteReplaceWarningResponse.c | 146 + .../asn1c/S1ap-WriteReplaceWarningResponse.h | 54 + lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.c | 74 + lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.h | 49 + lib/asn/asn1c/asn_SEQUENCE_OF.c | 41 + lib/asn/asn1c/asn_SEQUENCE_OF.h | 52 + lib/asn/asn1c/asn_SET_OF.c | 88 + lib/asn/asn1c/asn_SET_OF.h | 62 + lib/asn/asn1c/asn_application.h | 47 + lib/asn/asn1c/asn_codecs.h | 109 + lib/asn/asn1c/asn_codecs_prim.c | 312 + lib/asn/asn1c/asn_codecs_prim.h | 53 + lib/asn/asn1c/asn_internal.h | 128 + lib/asn/asn1c/asn_system.h | 137 + lib/asn/asn1c/ber_decoder.c | 283 + lib/asn/asn1c/ber_decoder.h | 64 + lib/asn/asn1c/ber_tlv_length.c | 178 + lib/asn/asn1c/ber_tlv_length.h | 50 + lib/asn/asn1c/ber_tlv_tag.c | 144 + lib/asn/asn1c/ber_tlv_tag.h | 60 + lib/asn/asn1c/constr_CHOICE.c | 1275 ++ lib/asn/asn1c/constr_CHOICE.h | 59 + lib/asn/asn1c/constr_SEQUENCE.c | 1765 +++ lib/asn/asn1c/constr_SEQUENCE.h | 62 + lib/asn/asn1c/constr_SEQUENCE_OF.c | 275 + lib/asn/asn1c/constr_SEQUENCE_OF.h | 35 + lib/asn/asn1c/constr_SET_OF.c | 1042 ++ lib/asn/asn1c/constr_SET_OF.h | 44 + lib/asn/asn1c/constr_TYPE.c | 77 + lib/asn/asn1c/constr_TYPE.h | 182 + lib/asn/asn1c/constraints.c | 93 + lib/asn/asn1c/constraints.h | 63 + lib/asn/asn1c/der_encoder.c | 201 + lib/asn/asn1c/der_encoder.h | 68 + lib/asn/asn1c/per_decoder.c | 176 + lib/asn/asn1c/per_decoder.h | 78 + lib/asn/asn1c/per_encoder.c | 244 + lib/asn/asn1c/per_encoder.h | 80 + lib/asn/asn1c/per_opentype.c | 407 + lib/asn/asn1c/per_opentype.h | 24 + lib/asn/asn1c/per_support.c | 679 + lib/asn/asn1c/per_support.h | 152 + lib/asn/asn1c/xer_decoder.c | 368 + lib/asn/asn1c/xer_decoder.h | 106 + lib/asn/asn1c/xer_encoder.c | 67 + lib/asn/asn1c/xer_encoder.h | 59 + lib/asn/asn1c/xer_support.c | 227 + lib/asn/asn1c/xer_support.h | 55 + lib/asn/s1ap_common.c | 186 + lib/asn/s1ap_common.h | 460 + lib/asn/s1ap_decoder.c | 7919 +++++++++++ lib/asn/s1ap_encoder.c | 4384 ++++++ lib/asn/s1ap_ies_defs.h | 3291 +++++ lib/asn/s1ap_xer_print.c | 2255 +++ lib/asn/support/S1AP-PDU.asn | 5808 ++++++++ 816 files changed, 124859 insertions(+), 4 deletions(-) create mode 100644 lib/asn/Makefile.am create mode 100644 lib/asn/README create mode 100644 lib/asn/asn1c/ANY.c create mode 100644 lib/asn/asn1c/ANY.h create mode 100644 lib/asn/asn1c/BIT_STRING.c create mode 100644 lib/asn/asn1c/BIT_STRING.h create mode 100644 lib/asn/asn1c/BOOLEAN.c create mode 100644 lib/asn/asn1c/BOOLEAN.h create mode 100644 lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.c create mode 100644 lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.h create mode 100644 lib/asn/asn1c/E-RAB-S1ap-IE-ContainerPairList.c create mode 100644 lib/asn/asn1c/E-RAB-S1ap-IE-ContainerPairList.h create mode 100644 lib/asn/asn1c/INTEGER.c create mode 100644 lib/asn/asn1c/INTEGER.h create mode 100644 lib/asn/asn1c/Makefile.am create mode 100644 lib/asn/asn1c/NULL.c create mode 100644 lib/asn/asn1c/NULL.h create mode 100644 lib/asn/asn1c/NativeEnumerated.c create mode 100644 lib/asn/asn1c/NativeEnumerated.h create mode 100644 lib/asn/asn1c/NativeInteger.c create mode 100644 lib/asn/asn1c/NativeInteger.h create mode 100644 lib/asn/asn1c/OBJECT_IDENTIFIER.c create mode 100644 lib/asn/asn1c/OBJECT_IDENTIFIER.h create mode 100644 lib/asn/asn1c/OCTET_STRING.c create mode 100644 lib/asn/asn1c/OCTET_STRING.h create mode 100644 lib/asn/asn1c/PrintableString.c create mode 100644 lib/asn/asn1c/PrintableString.h create mode 100644 lib/asn/asn1c/PrivateIE-Container.c create mode 100644 lib/asn/asn1c/PrivateIE-Container.h create mode 100644 lib/asn/asn1c/PrivateIE-Field.c create mode 100644 lib/asn/asn1c/PrivateIE-Field.h create mode 100644 lib/asn/asn1c/ProtocolError-S1ap-IE-ContainerList.c create mode 100644 lib/asn/asn1c/ProtocolError-S1ap-IE-ContainerList.h create mode 100644 lib/asn/asn1c/ProtocolExtensionContainer.c create mode 100644 lib/asn/asn1c/ProtocolExtensionContainer.h create mode 100644 lib/asn/asn1c/ProtocolExtensionField.c create mode 100644 lib/asn/asn1c/ProtocolExtensionField.h create mode 100644 lib/asn/asn1c/ProtocolIE-Container.c create mode 100644 lib/asn/asn1c/ProtocolIE-Container.h create mode 100644 lib/asn/asn1c/ProtocolIE-ContainerList.c create mode 100644 lib/asn/asn1c/ProtocolIE-ContainerList.h create mode 100644 lib/asn/asn1c/ProtocolIE-ContainerPair.c create mode 100644 lib/asn/asn1c/ProtocolIE-ContainerPair.h create mode 100644 lib/asn/asn1c/ProtocolIE-ContainerPairList.c create mode 100644 lib/asn/asn1c/ProtocolIE-ContainerPairList.h create mode 100644 lib/asn/asn1c/ProtocolIE-Field.c create mode 100644 lib/asn/asn1c/ProtocolIE-Field.h create mode 100644 lib/asn/asn1c/ProtocolIE-FieldPair.c create mode 100644 lib/asn/asn1c/ProtocolIE-FieldPair.h create mode 100644 lib/asn/asn1c/ProtocolIE-SingleContainer.c create mode 100644 lib/asn/asn1c/ProtocolIE-SingleContainer.h create mode 100644 lib/asn/asn1c/S1AP-PDU.c create mode 100644 lib/asn/asn1c/S1AP-PDU.h create mode 100644 lib/asn/asn1c/S1ap-AllocationAndRetentionPriority.c create mode 100644 lib/asn/asn1c/S1ap-AllocationAndRetentionPriority.h create mode 100644 lib/asn/asn1c/S1ap-AreaScopeOfMDT.c create mode 100644 lib/asn/asn1c/S1ap-AreaScopeOfMDT.h create mode 100644 lib/asn/asn1c/S1ap-BPLMNs.c create mode 100644 lib/asn/asn1c/S1ap-BPLMNs.h create mode 100644 lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransfer-Item.c create mode 100644 lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransfer-Item.h create mode 100644 lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransferList.c create mode 100644 lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransferList.h create mode 100644 lib/asn/asn1c/S1ap-BitRate.c create mode 100644 lib/asn/asn1c/S1ap-BitRate.h create mode 100644 lib/asn/asn1c/S1ap-BroadcastCancelledAreaList.c create mode 100644 lib/asn/asn1c/S1ap-BroadcastCancelledAreaList.h create mode 100644 lib/asn/asn1c/S1ap-BroadcastCompletedAreaList.c create mode 100644 lib/asn/asn1c/S1ap-BroadcastCompletedAreaList.h create mode 100644 lib/asn/asn1c/S1ap-CGI.c create mode 100644 lib/asn/asn1c/S1ap-CGI.h create mode 100644 lib/asn/asn1c/S1ap-CI.c create mode 100644 lib/asn/asn1c/S1ap-CI.h create mode 100644 lib/asn/asn1c/S1ap-CNDomain.c create mode 100644 lib/asn/asn1c/S1ap-CNDomain.h create mode 100644 lib/asn/asn1c/S1ap-COUNTvalue.c create mode 100644 lib/asn/asn1c/S1ap-COUNTvalue.h create mode 100644 lib/asn/asn1c/S1ap-CSFallbackIndicator.c create mode 100644 lib/asn/asn1c/S1ap-CSFallbackIndicator.h create mode 100644 lib/asn/asn1c/S1ap-CSG-Id.c create mode 100644 lib/asn/asn1c/S1ap-CSG-Id.h create mode 100644 lib/asn/asn1c/S1ap-CSG-IdList-Item.c create mode 100644 lib/asn/asn1c/S1ap-CSG-IdList-Item.h create mode 100644 lib/asn/asn1c/S1ap-CSG-IdList.c create mode 100644 lib/asn/asn1c/S1ap-CSG-IdList.h create mode 100644 lib/asn/asn1c/S1ap-CSGMembershipStatus.c create mode 100644 lib/asn/asn1c/S1ap-CSGMembershipStatus.h create mode 100644 lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.c create mode 100644 lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.h create mode 100644 lib/asn/asn1c/S1ap-CancelledCellinEAI.c create mode 100644 lib/asn/asn1c/S1ap-CancelledCellinEAI.h create mode 100644 lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.c create mode 100644 lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.h create mode 100644 lib/asn/asn1c/S1ap-CancelledCellinTAI.c create mode 100644 lib/asn/asn1c/S1ap-CancelledCellinTAI.h create mode 100644 lib/asn/asn1c/S1ap-Cause.c create mode 100644 lib/asn/asn1c/S1ap-Cause.h create mode 100644 lib/asn/asn1c/S1ap-CauseMisc.c create mode 100644 lib/asn/asn1c/S1ap-CauseMisc.h create mode 100644 lib/asn/asn1c/S1ap-CauseNas.c create mode 100644 lib/asn/asn1c/S1ap-CauseNas.h create mode 100644 lib/asn/asn1c/S1ap-CauseProtocol.c create mode 100644 lib/asn/asn1c/S1ap-CauseProtocol.h create mode 100644 lib/asn/asn1c/S1ap-CauseRadioNetwork.c create mode 100644 lib/asn/asn1c/S1ap-CauseRadioNetwork.h create mode 100644 lib/asn/asn1c/S1ap-CauseTransport.c create mode 100644 lib/asn/asn1c/S1ap-CauseTransport.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000HORequiredIndication.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000HORequiredIndication.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000HOStatus.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000HOStatus.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXMEID.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXMEID.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXMSI.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXMSI.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXPilot.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXPilot.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXRAND.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXRAND.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000PDU.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000PDU.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000RATType.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000RATType.h create mode 100644 lib/asn/asn1c/S1ap-Cdma2000SectorID.c create mode 100644 lib/asn/asn1c/S1ap-Cdma2000SectorID.h create mode 100644 lib/asn/asn1c/S1ap-Cell-Size.c create mode 100644 lib/asn/asn1c/S1ap-Cell-Size.h create mode 100644 lib/asn/asn1c/S1ap-CellAccessMode.c create mode 100644 lib/asn/asn1c/S1ap-CellAccessMode.h create mode 100644 lib/asn/asn1c/S1ap-CellBasedMDT.c create mode 100644 lib/asn/asn1c/S1ap-CellBasedMDT.h create mode 100644 lib/asn/asn1c/S1ap-CellID-Broadcast-Item.c create mode 100644 lib/asn/asn1c/S1ap-CellID-Broadcast-Item.h create mode 100644 lib/asn/asn1c/S1ap-CellID-Broadcast.c create mode 100644 lib/asn/asn1c/S1ap-CellID-Broadcast.h create mode 100644 lib/asn/asn1c/S1ap-CellID-Cancelled-Item.c create mode 100644 lib/asn/asn1c/S1ap-CellID-Cancelled-Item.h create mode 100644 lib/asn/asn1c/S1ap-CellID-Cancelled.c create mode 100644 lib/asn/asn1c/S1ap-CellID-Cancelled.h create mode 100644 lib/asn/asn1c/S1ap-CellIdListforMDT.c create mode 100644 lib/asn/asn1c/S1ap-CellIdListforMDT.h create mode 100644 lib/asn/asn1c/S1ap-CellIdentity.c create mode 100644 lib/asn/asn1c/S1ap-CellIdentity.h create mode 100644 lib/asn/asn1c/S1ap-CellTrafficTrace.c create mode 100644 lib/asn/asn1c/S1ap-CellTrafficTrace.h create mode 100644 lib/asn/asn1c/S1ap-CellType.c create mode 100644 lib/asn/asn1c/S1ap-CellType.h create mode 100644 lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.c create mode 100644 lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.h create mode 100644 lib/asn/asn1c/S1ap-CompletedCellinEAI.c create mode 100644 lib/asn/asn1c/S1ap-CompletedCellinEAI.h create mode 100644 lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.c create mode 100644 lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.h create mode 100644 lib/asn/asn1c/S1ap-CompletedCellinTAI.c create mode 100644 lib/asn/asn1c/S1ap-CompletedCellinTAI.h create mode 100644 lib/asn/asn1c/S1ap-ConcurrentWarningMessageIndicator.c create mode 100644 lib/asn/asn1c/S1ap-ConcurrentWarningMessageIndicator.h create mode 100644 lib/asn/asn1c/S1ap-Correlation-ID.c create mode 100644 lib/asn/asn1c/S1ap-Correlation-ID.h create mode 100644 lib/asn/asn1c/S1ap-Criticality.c create mode 100644 lib/asn/asn1c/S1ap-Criticality.h create mode 100644 lib/asn/asn1c/S1ap-CriticalityDiagnostics-IE-List.c create mode 100644 lib/asn/asn1c/S1ap-CriticalityDiagnostics-IE-List.h create mode 100644 lib/asn/asn1c/S1ap-CriticalityDiagnostics-S1ap-IE-Item.c create mode 100644 lib/asn/asn1c/S1ap-CriticalityDiagnostics-S1ap-IE-Item.h create mode 100644 lib/asn/asn1c/S1ap-CriticalityDiagnostics.c create mode 100644 lib/asn/asn1c/S1ap-CriticalityDiagnostics.h create mode 100644 lib/asn/asn1c/S1ap-DL-Forwarding.c create mode 100644 lib/asn/asn1c/S1ap-DL-Forwarding.h create mode 100644 lib/asn/asn1c/S1ap-Data-Forwarding-Not-Possible.c create mode 100644 lib/asn/asn1c/S1ap-Data-Forwarding-Not-Possible.h create mode 100644 lib/asn/asn1c/S1ap-DataCodingScheme.c create mode 100644 lib/asn/asn1c/S1ap-DataCodingScheme.h create mode 100644 lib/asn/asn1c/S1ap-DeactivateTrace.c create mode 100644 lib/asn/asn1c/S1ap-DeactivateTrace.h create mode 100644 lib/asn/asn1c/S1ap-Direct-Forwarding-Path-Availability.c create mode 100644 lib/asn/asn1c/S1ap-Direct-Forwarding-Path-Availability.h create mode 100644 lib/asn/asn1c/S1ap-DownlinkNASTransport.c create mode 100644 lib/asn/asn1c/S1ap-DownlinkNASTransport.h create mode 100644 lib/asn/asn1c/S1ap-DownlinkNonUEAssociatedLPPaTransport.c create mode 100644 lib/asn/asn1c/S1ap-DownlinkNonUEAssociatedLPPaTransport.h create mode 100644 lib/asn/asn1c/S1ap-DownlinkS1cdma2000tunneling.c create mode 100644 lib/asn/asn1c/S1ap-DownlinkS1cdma2000tunneling.h create mode 100644 lib/asn/asn1c/S1ap-DownlinkUEAssociatedLPPaTransport.c create mode 100644 lib/asn/asn1c/S1ap-DownlinkUEAssociatedLPPaTransport.h create mode 100644 lib/asn/asn1c/S1ap-E-RAB-ID.c create mode 100644 lib/asn/asn1c/S1ap-E-RAB-ID.h create mode 100644 lib/asn/asn1c/S1ap-E-RABAdmittedItem.c create mode 100644 lib/asn/asn1c/S1ap-E-RABAdmittedItem.h create mode 100644 lib/asn/asn1c/S1ap-E-RABAdmittedList.c create mode 100644 lib/asn/asn1c/S1ap-E-RABAdmittedList.h create mode 100644 lib/asn/asn1c/S1ap-E-RABDataForwardingItem.c create mode 100644 lib/asn/asn1c/S1ap-E-RABDataForwardingItem.h create mode 100644 lib/asn/asn1c/S1ap-E-RABFailedToSetupItemHOReqAck.c create mode 100644 lib/asn/asn1c/S1ap-E-RABFailedToSetupItemHOReqAck.h create mode 100644 lib/asn/asn1c/S1ap-E-RABFailedtoSetupListHOReqAck.c create mode 100644 lib/asn/asn1c/S1ap-E-RABFailedtoSetupListHOReqAck.h create mode 100644 lib/asn/asn1c/S1ap-E-RABInformationList.c create mode 100644 lib/asn/asn1c/S1ap-E-RABInformationList.h create mode 100644 lib/asn/asn1c/S1ap-E-RABInformationListItem.c create mode 100644 lib/asn/asn1c/S1ap-E-RABInformationListItem.h create mode 100644 lib/asn/asn1c/S1ap-E-RABItem.c create mode 100644 lib/asn/asn1c/S1ap-E-RABItem.h create mode 100644 lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.c create mode 100644 lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.h create mode 100644 lib/asn/asn1c/S1ap-E-RABList.c create mode 100644 lib/asn/asn1c/S1ap-E-RABList.h create mode 100644 lib/asn/asn1c/S1ap-E-RABModifyItemBearerModRes.c create mode 100644 lib/asn/asn1c/S1ap-E-RABModifyItemBearerModRes.h create mode 100644 lib/asn/asn1c/S1ap-E-RABModifyListBearerModRes.c create mode 100644 lib/asn/asn1c/S1ap-E-RABModifyListBearerModRes.h create mode 100644 lib/asn/asn1c/S1ap-E-RABModifyRequest.c create mode 100644 lib/asn/asn1c/S1ap-E-RABModifyRequest.h create mode 100644 lib/asn/asn1c/S1ap-E-RABModifyResponse.c create mode 100644 lib/asn/asn1c/S1ap-E-RABModifyResponse.h create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseCommand.c create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseCommand.h create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseIndication.c create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseIndication.h create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseItemBearerRelComp.c create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseItemBearerRelComp.h create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseListBearerRelComp.c create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseListBearerRelComp.h create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseResponse.c create mode 100644 lib/asn/asn1c/S1ap-E-RABReleaseResponse.h create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupItemBearerSURes.c create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupItemBearerSURes.h create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.c create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.h create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupListBearerSURes.c create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupListBearerSURes.h create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.c create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.h create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupRequest.c create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupRequest.h create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupResponse.c create mode 100644 lib/asn/asn1c/S1ap-E-RABSetupResponse.h create mode 100644 lib/asn/asn1c/S1ap-E-RABSubjecttoDataForwardingList.c create mode 100644 lib/asn/asn1c/S1ap-E-RABSubjecttoDataForwardingList.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeModifiedItemBearerModReq.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeModifiedItemBearerModReq.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeModifiedListBearerModReq.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeModifiedListBearerModReq.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupItemBearerSUReq.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupItemBearerSUReq.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupListBearerSUReq.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupListBearerSUReq.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.h create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.c create mode 100644 lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.h create mode 100644 lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.c create mode 100644 lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.h create mode 100644 lib/asn/asn1c/S1ap-ECGIList.c create mode 100644 lib/asn/asn1c/S1ap-ECGIList.h create mode 100644 lib/asn/asn1c/S1ap-ENB-ID.c create mode 100644 lib/asn/asn1c/S1ap-ENB-ID.h create mode 100644 lib/asn/asn1c/S1ap-ENB-StatusTransfer-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-ENB-StatusTransfer-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.c create mode 100644 lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.h create mode 100644 lib/asn/asn1c/S1ap-ENBConfigurationTransfer.c create mode 100644 lib/asn/asn1c/S1ap-ENBConfigurationTransfer.h create mode 100644 lib/asn/asn1c/S1ap-ENBConfigurationUpdate.c create mode 100644 lib/asn/asn1c/S1ap-ENBConfigurationUpdate.h create mode 100644 lib/asn/asn1c/S1ap-ENBConfigurationUpdateAcknowledge.c create mode 100644 lib/asn/asn1c/S1ap-ENBConfigurationUpdateAcknowledge.h create mode 100644 lib/asn/asn1c/S1ap-ENBConfigurationUpdateFailure.c create mode 100644 lib/asn/asn1c/S1ap-ENBConfigurationUpdateFailure.h create mode 100644 lib/asn/asn1c/S1ap-ENBDirectInformationTransfer.c create mode 100644 lib/asn/asn1c/S1ap-ENBDirectInformationTransfer.h create mode 100644 lib/asn/asn1c/S1ap-ENBStatusTransfer.c create mode 100644 lib/asn/asn1c/S1ap-ENBStatusTransfer.h create mode 100644 lib/asn/asn1c/S1ap-ENBX2ExtTLA.c create mode 100644 lib/asn/asn1c/S1ap-ENBX2ExtTLA.h create mode 100644 lib/asn/asn1c/S1ap-ENBX2ExtTLAs.c create mode 100644 lib/asn/asn1c/S1ap-ENBX2ExtTLAs.h create mode 100644 lib/asn/asn1c/S1ap-ENBX2GTPTLAs.c create mode 100644 lib/asn/asn1c/S1ap-ENBX2GTPTLAs.h create mode 100644 lib/asn/asn1c/S1ap-ENBX2TLAs.c create mode 100644 lib/asn/asn1c/S1ap-ENBX2TLAs.h create mode 100644 lib/asn/asn1c/S1ap-ENBname.c create mode 100644 lib/asn/asn1c/S1ap-ENBname.h create mode 100644 lib/asn/asn1c/S1ap-EPLMNs.c create mode 100644 lib/asn/asn1c/S1ap-EPLMNs.h create mode 100644 lib/asn/asn1c/S1ap-EUTRAN-CGI.c create mode 100644 lib/asn/asn1c/S1ap-EUTRAN-CGI.h create mode 100644 lib/asn/asn1c/S1ap-EUTRANRoundTripDelayEstimationInfo.c create mode 100644 lib/asn/asn1c/S1ap-EUTRANRoundTripDelayEstimationInfo.h create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast-Item.c create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast-Item.h create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast.c create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast.h create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled-Item.c create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled-Item.h create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled.c create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled.h create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID.c create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaID.h create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaIDList.c create mode 100644 lib/asn/asn1c/S1ap-EmergencyAreaIDList.h create mode 100644 lib/asn/asn1c/S1ap-EncryptionAlgorithms.c create mode 100644 lib/asn/asn1c/S1ap-EncryptionAlgorithms.h create mode 100644 lib/asn/asn1c/S1ap-ErrorIndication.c create mode 100644 lib/asn/asn1c/S1ap-ErrorIndication.h create mode 100644 lib/asn/asn1c/S1ap-EventType.c create mode 100644 lib/asn/asn1c/S1ap-EventType.h create mode 100644 lib/asn/asn1c/S1ap-ExtendedRNC-ID.c create mode 100644 lib/asn/asn1c/S1ap-ExtendedRNC-ID.h create mode 100644 lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.c create mode 100644 lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.h create mode 100644 lib/asn/asn1c/S1ap-ForbiddenInterRATs.c create mode 100644 lib/asn/asn1c/S1ap-ForbiddenInterRATs.h create mode 100644 lib/asn/asn1c/S1ap-ForbiddenLACs.c create mode 100644 lib/asn/asn1c/S1ap-ForbiddenLACs.h create mode 100644 lib/asn/asn1c/S1ap-ForbiddenLAs-Item.c create mode 100644 lib/asn/asn1c/S1ap-ForbiddenLAs-Item.h create mode 100644 lib/asn/asn1c/S1ap-ForbiddenLAs.c create mode 100644 lib/asn/asn1c/S1ap-ForbiddenLAs.h create mode 100644 lib/asn/asn1c/S1ap-ForbiddenTACs.c create mode 100644 lib/asn/asn1c/S1ap-ForbiddenTACs.h create mode 100644 lib/asn/asn1c/S1ap-ForbiddenTAs-Item.c create mode 100644 lib/asn/asn1c/S1ap-ForbiddenTAs-Item.h create mode 100644 lib/asn/asn1c/S1ap-ForbiddenTAs.c create mode 100644 lib/asn/asn1c/S1ap-ForbiddenTAs.h create mode 100644 lib/asn/asn1c/S1ap-GBR-QosInformation.c create mode 100644 lib/asn/asn1c/S1ap-GBR-QosInformation.h create mode 100644 lib/asn/asn1c/S1ap-GERAN-Cell-ID.c create mode 100644 lib/asn/asn1c/S1ap-GERAN-Cell-ID.h create mode 100644 lib/asn/asn1c/S1ap-GTP-TEID.c create mode 100644 lib/asn/asn1c/S1ap-GTP-TEID.h create mode 100644 lib/asn/asn1c/S1ap-GUMMEI.c create mode 100644 lib/asn/asn1c/S1ap-GUMMEI.h create mode 100644 lib/asn/asn1c/S1ap-GUMMEIList.c create mode 100644 lib/asn/asn1c/S1ap-GUMMEIList.h create mode 100644 lib/asn/asn1c/S1ap-GWContextReleaseIndication.c create mode 100644 lib/asn/asn1c/S1ap-GWContextReleaseIndication.h create mode 100644 lib/asn/asn1c/S1ap-Global-ENB-ID.c create mode 100644 lib/asn/asn1c/S1ap-Global-ENB-ID.h create mode 100644 lib/asn/asn1c/S1ap-HFN.c create mode 100644 lib/asn/asn1c/S1ap-HFN.h create mode 100644 lib/asn/asn1c/S1ap-HandoverCancel.c create mode 100644 lib/asn/asn1c/S1ap-HandoverCancel.h create mode 100644 lib/asn/asn1c/S1ap-HandoverCancelAcknowledge.c create mode 100644 lib/asn/asn1c/S1ap-HandoverCancelAcknowledge.h create mode 100644 lib/asn/asn1c/S1ap-HandoverCommand.c create mode 100644 lib/asn/asn1c/S1ap-HandoverCommand.h create mode 100644 lib/asn/asn1c/S1ap-HandoverFailure.c create mode 100644 lib/asn/asn1c/S1ap-HandoverFailure.h create mode 100644 lib/asn/asn1c/S1ap-HandoverNotify.c create mode 100644 lib/asn/asn1c/S1ap-HandoverNotify.h create mode 100644 lib/asn/asn1c/S1ap-HandoverPreparationFailure.c create mode 100644 lib/asn/asn1c/S1ap-HandoverPreparationFailure.h create mode 100644 lib/asn/asn1c/S1ap-HandoverRequest.c create mode 100644 lib/asn/asn1c/S1ap-HandoverRequest.h create mode 100644 lib/asn/asn1c/S1ap-HandoverRequestAcknowledge.c create mode 100644 lib/asn/asn1c/S1ap-HandoverRequestAcknowledge.h create mode 100644 lib/asn/asn1c/S1ap-HandoverRequired.c create mode 100644 lib/asn/asn1c/S1ap-HandoverRequired.h create mode 100644 lib/asn/asn1c/S1ap-HandoverRestrictionList.c create mode 100644 lib/asn/asn1c/S1ap-HandoverRestrictionList.h create mode 100644 lib/asn/asn1c/S1ap-HandoverType.c create mode 100644 lib/asn/asn1c/S1ap-HandoverType.h create mode 100644 lib/asn/asn1c/S1ap-IE.c create mode 100644 lib/asn/asn1c/S1ap-IE.h create mode 100644 lib/asn/asn1c/S1ap-IMSI.c create mode 100644 lib/asn/asn1c/S1ap-IMSI.h create mode 100644 lib/asn/asn1c/S1ap-ImmediateMDT.c create mode 100644 lib/asn/asn1c/S1ap-ImmediateMDT.h create mode 100644 lib/asn/asn1c/S1ap-InitialContextSetupFailure.c create mode 100644 lib/asn/asn1c/S1ap-InitialContextSetupFailure.h create mode 100644 lib/asn/asn1c/S1ap-InitialContextSetupRequest.c create mode 100644 lib/asn/asn1c/S1ap-InitialContextSetupRequest.h create mode 100644 lib/asn/asn1c/S1ap-InitialContextSetupResponse.c create mode 100644 lib/asn/asn1c/S1ap-InitialContextSetupResponse.h create mode 100644 lib/asn/asn1c/S1ap-InitialUEMessage.c create mode 100644 lib/asn/asn1c/S1ap-InitialUEMessage.h create mode 100644 lib/asn/asn1c/S1ap-InitiatingMessage.c create mode 100644 lib/asn/asn1c/S1ap-InitiatingMessage.h create mode 100644 lib/asn/asn1c/S1ap-IntegrityProtectionAlgorithms.c create mode 100644 lib/asn/asn1c/S1ap-IntegrityProtectionAlgorithms.h create mode 100644 lib/asn/asn1c/S1ap-Inter-SystemInformationTransferType.c create mode 100644 lib/asn/asn1c/S1ap-Inter-SystemInformationTransferType.h create mode 100644 lib/asn/asn1c/S1ap-InterfacesToTrace.c create mode 100644 lib/asn/asn1c/S1ap-InterfacesToTrace.h create mode 100644 lib/asn/asn1c/S1ap-KillRequest.c create mode 100644 lib/asn/asn1c/S1ap-KillRequest.h create mode 100644 lib/asn/asn1c/S1ap-KillResponse.c create mode 100644 lib/asn/asn1c/S1ap-KillResponse.h create mode 100644 lib/asn/asn1c/S1ap-L3-Information.c create mode 100644 lib/asn/asn1c/S1ap-L3-Information.h create mode 100644 lib/asn/asn1c/S1ap-LAC.c create mode 100644 lib/asn/asn1c/S1ap-LAC.h create mode 100644 lib/asn/asn1c/S1ap-LAI.c create mode 100644 lib/asn/asn1c/S1ap-LAI.h create mode 100644 lib/asn/asn1c/S1ap-LPPa-PDU.c create mode 100644 lib/asn/asn1c/S1ap-LPPa-PDU.h create mode 100644 lib/asn/asn1c/S1ap-LastVisitedCell-Item.c create mode 100644 lib/asn/asn1c/S1ap-LastVisitedCell-Item.h create mode 100644 lib/asn/asn1c/S1ap-LastVisitedEUTRANCellInformation.c create mode 100644 lib/asn/asn1c/S1ap-LastVisitedEUTRANCellInformation.h create mode 100644 lib/asn/asn1c/S1ap-LastVisitedGERANCellInformation.c create mode 100644 lib/asn/asn1c/S1ap-LastVisitedGERANCellInformation.h create mode 100644 lib/asn/asn1c/S1ap-LastVisitedUTRANCellInformation.c create mode 100644 lib/asn/asn1c/S1ap-LastVisitedUTRANCellInformation.h create mode 100644 lib/asn/asn1c/S1ap-LocationReport.c create mode 100644 lib/asn/asn1c/S1ap-LocationReport.h create mode 100644 lib/asn/asn1c/S1ap-LocationReportingControl.c create mode 100644 lib/asn/asn1c/S1ap-LocationReportingControl.h create mode 100644 lib/asn/asn1c/S1ap-LocationReportingFailureIndication.c create mode 100644 lib/asn/asn1c/S1ap-LocationReportingFailureIndication.h create mode 100644 lib/asn/asn1c/S1ap-LoggedMDT.c create mode 100644 lib/asn/asn1c/S1ap-LoggedMDT.h create mode 100644 lib/asn/asn1c/S1ap-LoggingDuration.c create mode 100644 lib/asn/asn1c/S1ap-LoggingDuration.h create mode 100644 lib/asn/asn1c/S1ap-LoggingInterval.c create mode 100644 lib/asn/asn1c/S1ap-LoggingInterval.h create mode 100644 lib/asn/asn1c/S1ap-M-TMSI.c create mode 100644 lib/asn/asn1c/S1ap-M-TMSI.h create mode 100644 lib/asn/asn1c/S1ap-MDT-Activation.c create mode 100644 lib/asn/asn1c/S1ap-MDT-Activation.h create mode 100644 lib/asn/asn1c/S1ap-MDT-Configuration.c create mode 100644 lib/asn/asn1c/S1ap-MDT-Configuration.h create mode 100644 lib/asn/asn1c/S1ap-MDTMode.c create mode 100644 lib/asn/asn1c/S1ap-MDTMode.h create mode 100644 lib/asn/asn1c/S1ap-MME-Code.c create mode 100644 lib/asn/asn1c/S1ap-MME-Code.h create mode 100644 lib/asn/asn1c/S1ap-MME-Group-ID.c create mode 100644 lib/asn/asn1c/S1ap-MME-Group-ID.h create mode 100644 lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.c create mode 100644 lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.h create mode 100644 lib/asn/asn1c/S1ap-MMEConfigurationTransfer.c create mode 100644 lib/asn/asn1c/S1ap-MMEConfigurationTransfer.h create mode 100644 lib/asn/asn1c/S1ap-MMEConfigurationUpdate.c create mode 100644 lib/asn/asn1c/S1ap-MMEConfigurationUpdate.h create mode 100644 lib/asn/asn1c/S1ap-MMEConfigurationUpdateAcknowledge.c create mode 100644 lib/asn/asn1c/S1ap-MMEConfigurationUpdateAcknowledge.h create mode 100644 lib/asn/asn1c/S1ap-MMEConfigurationUpdateFailure.c create mode 100644 lib/asn/asn1c/S1ap-MMEConfigurationUpdateFailure.h create mode 100644 lib/asn/asn1c/S1ap-MMEDirectInformationTransfer.c create mode 100644 lib/asn/asn1c/S1ap-MMEDirectInformationTransfer.h create mode 100644 lib/asn/asn1c/S1ap-MMERelaySupportIndicator.c create mode 100644 lib/asn/asn1c/S1ap-MMERelaySupportIndicator.h create mode 100644 lib/asn/asn1c/S1ap-MMEStatusTransfer.c create mode 100644 lib/asn/asn1c/S1ap-MMEStatusTransfer.h create mode 100644 lib/asn/asn1c/S1ap-MMEname.c create mode 100644 lib/asn/asn1c/S1ap-MMEname.h create mode 100644 lib/asn/asn1c/S1ap-MSClassmark2.c create mode 100644 lib/asn/asn1c/S1ap-MSClassmark2.h create mode 100644 lib/asn/asn1c/S1ap-MSClassmark3.c create mode 100644 lib/asn/asn1c/S1ap-MSClassmark3.h create mode 100644 lib/asn/asn1c/S1ap-ManagementBasedMDTAllowed.c create mode 100644 lib/asn/asn1c/S1ap-ManagementBasedMDTAllowed.h create mode 100644 lib/asn/asn1c/S1ap-MeasurementThresholdA2.c create mode 100644 lib/asn/asn1c/S1ap-MeasurementThresholdA2.h create mode 100644 lib/asn/asn1c/S1ap-MeasurementsToActivate.c create mode 100644 lib/asn/asn1c/S1ap-MeasurementsToActivate.h create mode 100644 lib/asn/asn1c/S1ap-MessageIdentifier.c create mode 100644 lib/asn/asn1c/S1ap-MessageIdentifier.h create mode 100644 lib/asn/asn1c/S1ap-NAS-PDU.c create mode 100644 lib/asn/asn1c/S1ap-NAS-PDU.h create mode 100644 lib/asn/asn1c/S1ap-NASNonDeliveryIndication.c create mode 100644 lib/asn/asn1c/S1ap-NASNonDeliveryIndication.h create mode 100644 lib/asn/asn1c/S1ap-NASSecurityParametersfromE-UTRAN.c create mode 100644 lib/asn/asn1c/S1ap-NASSecurityParametersfromE-UTRAN.h create mode 100644 lib/asn/asn1c/S1ap-NASSecurityParameterstoE-UTRAN.c create mode 100644 lib/asn/asn1c/S1ap-NASSecurityParameterstoE-UTRAN.h create mode 100644 lib/asn/asn1c/S1ap-NumberOfBroadcasts.c create mode 100644 lib/asn/asn1c/S1ap-NumberOfBroadcasts.h create mode 100644 lib/asn/asn1c/S1ap-NumberofBroadcastRequest.c create mode 100644 lib/asn/asn1c/S1ap-NumberofBroadcastRequest.h create mode 100644 lib/asn/asn1c/S1ap-OldBSS-ToNewBSS-Information.c create mode 100644 lib/asn/asn1c/S1ap-OldBSS-ToNewBSS-Information.h create mode 100644 lib/asn/asn1c/S1ap-OverloadAction.c create mode 100644 lib/asn/asn1c/S1ap-OverloadAction.h create mode 100644 lib/asn/asn1c/S1ap-OverloadResponse.c create mode 100644 lib/asn/asn1c/S1ap-OverloadResponse.h create mode 100644 lib/asn/asn1c/S1ap-OverloadStart.c create mode 100644 lib/asn/asn1c/S1ap-OverloadStart.h create mode 100644 lib/asn/asn1c/S1ap-OverloadStop.c create mode 100644 lib/asn/asn1c/S1ap-OverloadStop.h create mode 100644 lib/asn/asn1c/S1ap-PDCP-SN.c create mode 100644 lib/asn/asn1c/S1ap-PDCP-SN.h create mode 100644 lib/asn/asn1c/S1ap-PLMNidentity.c create mode 100644 lib/asn/asn1c/S1ap-PLMNidentity.h create mode 100644 lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.c create mode 100644 lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.h create mode 100644 lib/asn/asn1c/S1ap-Paging.c create mode 100644 lib/asn/asn1c/S1ap-Paging.h create mode 100644 lib/asn/asn1c/S1ap-PagingDRX.c create mode 100644 lib/asn/asn1c/S1ap-PagingDRX.h create mode 100644 lib/asn/asn1c/S1ap-PagingPriority.c create mode 100644 lib/asn/asn1c/S1ap-PagingPriority.h create mode 100644 lib/asn/asn1c/S1ap-PathSwitchRequest.c create mode 100644 lib/asn/asn1c/S1ap-PathSwitchRequest.h create mode 100644 lib/asn/asn1c/S1ap-PathSwitchRequestAcknowledge.c create mode 100644 lib/asn/asn1c/S1ap-PathSwitchRequestAcknowledge.h create mode 100644 lib/asn/asn1c/S1ap-PathSwitchRequestFailure.c create mode 100644 lib/asn/asn1c/S1ap-PathSwitchRequestFailure.h create mode 100644 lib/asn/asn1c/S1ap-PeriodicReportingMDT.c create mode 100644 lib/asn/asn1c/S1ap-PeriodicReportingMDT.h create mode 100644 lib/asn/asn1c/S1ap-Pre-emptionCapability.c create mode 100644 lib/asn/asn1c/S1ap-Pre-emptionCapability.h create mode 100644 lib/asn/asn1c/S1ap-Pre-emptionVulnerability.c create mode 100644 lib/asn/asn1c/S1ap-Pre-emptionVulnerability.h create mode 100644 lib/asn/asn1c/S1ap-Presence.c create mode 100644 lib/asn/asn1c/S1ap-Presence.h create mode 100644 lib/asn/asn1c/S1ap-PriorityLevel.c create mode 100644 lib/asn/asn1c/S1ap-PriorityLevel.h create mode 100644 lib/asn/asn1c/S1ap-PrivacyIndicator.c create mode 100644 lib/asn/asn1c/S1ap-PrivacyIndicator.h create mode 100644 lib/asn/asn1c/S1ap-PrivateIE-ID.c create mode 100644 lib/asn/asn1c/S1ap-PrivateIE-ID.h create mode 100644 lib/asn/asn1c/S1ap-PrivateMessage.c create mode 100644 lib/asn/asn1c/S1ap-PrivateMessage.h create mode 100644 lib/asn/asn1c/S1ap-ProcedureCode.c create mode 100644 lib/asn/asn1c/S1ap-ProcedureCode.h create mode 100644 lib/asn/asn1c/S1ap-ProtocolExtensionID.c create mode 100644 lib/asn/asn1c/S1ap-ProtocolExtensionID.h create mode 100644 lib/asn/asn1c/S1ap-ProtocolIE-ID.c create mode 100644 lib/asn/asn1c/S1ap-ProtocolIE-ID.h create mode 100644 lib/asn/asn1c/S1ap-QCI.c create mode 100644 lib/asn/asn1c/S1ap-QCI.h create mode 100644 lib/asn/asn1c/S1ap-RAC.c create mode 100644 lib/asn/asn1c/S1ap-RAC.h create mode 100644 lib/asn/asn1c/S1ap-RIMInformation.c create mode 100644 lib/asn/asn1c/S1ap-RIMInformation.h create mode 100644 lib/asn/asn1c/S1ap-RIMRoutingAddress.c create mode 100644 lib/asn/asn1c/S1ap-RIMRoutingAddress.h create mode 100644 lib/asn/asn1c/S1ap-RIMTransfer.c create mode 100644 lib/asn/asn1c/S1ap-RIMTransfer.h create mode 100644 lib/asn/asn1c/S1ap-RNC-ID.c create mode 100644 lib/asn/asn1c/S1ap-RNC-ID.h create mode 100644 lib/asn/asn1c/S1ap-RRC-Container.c create mode 100644 lib/asn/asn1c/S1ap-RRC-Container.h create mode 100644 lib/asn/asn1c/S1ap-RRC-Establishment-Cause.c create mode 100644 lib/asn/asn1c/S1ap-RRC-Establishment-Cause.h create mode 100644 lib/asn/asn1c/S1ap-ReceiveStatusofULPDCPSDUs.c create mode 100644 lib/asn/asn1c/S1ap-ReceiveStatusofULPDCPSDUs.h create mode 100644 lib/asn/asn1c/S1ap-RelativeMMECapacity.c create mode 100644 lib/asn/asn1c/S1ap-RelativeMMECapacity.h create mode 100644 lib/asn/asn1c/S1ap-RelayNode-Indicator.c create mode 100644 lib/asn/asn1c/S1ap-RelayNode-Indicator.h create mode 100644 lib/asn/asn1c/S1ap-RepetitionPeriod.c create mode 100644 lib/asn/asn1c/S1ap-RepetitionPeriod.h create mode 100644 lib/asn/asn1c/S1ap-ReportAmountMDT.c create mode 100644 lib/asn/asn1c/S1ap-ReportAmountMDT.h create mode 100644 lib/asn/asn1c/S1ap-ReportArea.c create mode 100644 lib/asn/asn1c/S1ap-ReportArea.h create mode 100644 lib/asn/asn1c/S1ap-ReportIntervalMDT.c create mode 100644 lib/asn/asn1c/S1ap-ReportIntervalMDT.h create mode 100644 lib/asn/asn1c/S1ap-ReportingTriggerMDT.c create mode 100644 lib/asn/asn1c/S1ap-ReportingTriggerMDT.h create mode 100644 lib/asn/asn1c/S1ap-RequestType.c create mode 100644 lib/asn/asn1c/S1ap-RequestType.h create mode 100644 lib/asn/asn1c/S1ap-Reset.c create mode 100644 lib/asn/asn1c/S1ap-Reset.h create mode 100644 lib/asn/asn1c/S1ap-ResetAcknowledge.c create mode 100644 lib/asn/asn1c/S1ap-ResetAcknowledge.h create mode 100644 lib/asn/asn1c/S1ap-ResetAll.c create mode 100644 lib/asn/asn1c/S1ap-ResetAll.h create mode 100644 lib/asn/asn1c/S1ap-ResetType.c create mode 100644 lib/asn/asn1c/S1ap-ResetType.h create mode 100644 lib/asn/asn1c/S1ap-Routing-ID.c create mode 100644 lib/asn/asn1c/S1ap-Routing-ID.h create mode 100644 lib/asn/asn1c/S1ap-S-TMSI.c create mode 100644 lib/asn/asn1c/S1ap-S-TMSI.h create mode 100644 lib/asn/asn1c/S1ap-S1SetupFailure.c create mode 100644 lib/asn/asn1c/S1ap-S1SetupFailure.h create mode 100644 lib/asn/asn1c/S1ap-S1SetupRequest.c create mode 100644 lib/asn/asn1c/S1ap-S1SetupRequest.h create mode 100644 lib/asn/asn1c/S1ap-S1SetupResponse.c create mode 100644 lib/asn/asn1c/S1ap-S1SetupResponse.h create mode 100644 lib/asn/asn1c/S1ap-SONConfigurationTransfer.c create mode 100644 lib/asn/asn1c/S1ap-SONConfigurationTransfer.h create mode 100644 lib/asn/asn1c/S1ap-SONInformation.c create mode 100644 lib/asn/asn1c/S1ap-SONInformation.h create mode 100644 lib/asn/asn1c/S1ap-SONInformationReply.c create mode 100644 lib/asn/asn1c/S1ap-SONInformationReply.h create mode 100644 lib/asn/asn1c/S1ap-SONInformationRequest.c create mode 100644 lib/asn/asn1c/S1ap-SONInformationRequest.h create mode 100644 lib/asn/asn1c/S1ap-SRVCCHOIndication.c create mode 100644 lib/asn/asn1c/S1ap-SRVCCHOIndication.h create mode 100644 lib/asn/asn1c/S1ap-SRVCCOperationPossible.c create mode 100644 lib/asn/asn1c/S1ap-SRVCCOperationPossible.h create mode 100644 lib/asn/asn1c/S1ap-SecurityContext.c create mode 100644 lib/asn/asn1c/S1ap-SecurityContext.h create mode 100644 lib/asn/asn1c/S1ap-SecurityKey.c create mode 100644 lib/asn/asn1c/S1ap-SecurityKey.h create mode 100644 lib/asn/asn1c/S1ap-SerialNumber.c create mode 100644 lib/asn/asn1c/S1ap-SerialNumber.h create mode 100644 lib/asn/asn1c/S1ap-ServedGUMMEIs.c create mode 100644 lib/asn/asn1c/S1ap-ServedGUMMEIs.h create mode 100644 lib/asn/asn1c/S1ap-ServedGUMMEIsItem.c create mode 100644 lib/asn/asn1c/S1ap-ServedGUMMEIsItem.h create mode 100644 lib/asn/asn1c/S1ap-ServedGroupIDs.c create mode 100644 lib/asn/asn1c/S1ap-ServedGroupIDs.h create mode 100644 lib/asn/asn1c/S1ap-ServedMMECs.c create mode 100644 lib/asn/asn1c/S1ap-ServedMMECs.h create mode 100644 lib/asn/asn1c/S1ap-ServedPLMNs.c create mode 100644 lib/asn/asn1c/S1ap-ServedPLMNs.h create mode 100644 lib/asn/asn1c/S1ap-Source-ToTarget-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-Source-ToTarget-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-SourceBSS-ToTargetBSS-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-SourceRNC-ToTargetRNC-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-SourceRNC-ToTargetRNC-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-SourceeNB-ID.c create mode 100644 lib/asn/asn1c/S1ap-SourceeNB-ID.h create mode 100644 lib/asn/asn1c/S1ap-SourceeNB-ToTargeteNB-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-SourceeNB-ToTargeteNB-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-StratumLevel.c create mode 100644 lib/asn/asn1c/S1ap-StratumLevel.h create mode 100644 lib/asn/asn1c/S1ap-SubscriberProfileIDforRFP.c create mode 100644 lib/asn/asn1c/S1ap-SubscriberProfileIDforRFP.h create mode 100644 lib/asn/asn1c/S1ap-SuccessfulOutcome.c create mode 100644 lib/asn/asn1c/S1ap-SuccessfulOutcome.h create mode 100644 lib/asn/asn1c/S1ap-SupportedTAs-Item.c create mode 100644 lib/asn/asn1c/S1ap-SupportedTAs-Item.h create mode 100644 lib/asn/asn1c/S1ap-SupportedTAs.c create mode 100644 lib/asn/asn1c/S1ap-SupportedTAs.h create mode 100644 lib/asn/asn1c/S1ap-SynchronizationStatus.c create mode 100644 lib/asn/asn1c/S1ap-SynchronizationStatus.h create mode 100644 lib/asn/asn1c/S1ap-TABasedMDT.c create mode 100644 lib/asn/asn1c/S1ap-TABasedMDT.h create mode 100644 lib/asn/asn1c/S1ap-TAC.c create mode 100644 lib/asn/asn1c/S1ap-TAC.h create mode 100644 lib/asn/asn1c/S1ap-TAI-Broadcast-Item.c create mode 100644 lib/asn/asn1c/S1ap-TAI-Broadcast-Item.h create mode 100644 lib/asn/asn1c/S1ap-TAI-Broadcast.c create mode 100644 lib/asn/asn1c/S1ap-TAI-Broadcast.h create mode 100644 lib/asn/asn1c/S1ap-TAI-Cancelled-Item.c create mode 100644 lib/asn/asn1c/S1ap-TAI-Cancelled-Item.h create mode 100644 lib/asn/asn1c/S1ap-TAI-Cancelled.c create mode 100644 lib/asn/asn1c/S1ap-TAI-Cancelled.h create mode 100644 lib/asn/asn1c/S1ap-TAI.c create mode 100644 lib/asn/asn1c/S1ap-TAI.h create mode 100644 lib/asn/asn1c/S1ap-TAIItem.c create mode 100644 lib/asn/asn1c/S1ap-TAIItem.h create mode 100644 lib/asn/asn1c/S1ap-TAIList.c create mode 100644 lib/asn/asn1c/S1ap-TAIList.h create mode 100644 lib/asn/asn1c/S1ap-TAIListforWarning.c create mode 100644 lib/asn/asn1c/S1ap-TAIListforWarning.h create mode 100644 lib/asn/asn1c/S1ap-TAListforMDT.c create mode 100644 lib/asn/asn1c/S1ap-TAListforMDT.h create mode 100644 lib/asn/asn1c/S1ap-TBCD-STRING.c create mode 100644 lib/asn/asn1c/S1ap-TBCD-STRING.h create mode 100644 lib/asn/asn1c/S1ap-Target-ToSource-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-Target-ToSource-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-TargetBSS-ToSourceBSS-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-TargetBSS-ToSourceBSS-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-TargetID.c create mode 100644 lib/asn/asn1c/S1ap-TargetID.h create mode 100644 lib/asn/asn1c/S1ap-TargetRNC-ID.c create mode 100644 lib/asn/asn1c/S1ap-TargetRNC-ID.h create mode 100644 lib/asn/asn1c/S1ap-TargetRNC-ToSourceRNC-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-TargetRNC-ToSourceRNC-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-TargeteNB-ID.c create mode 100644 lib/asn/asn1c/S1ap-TargeteNB-ID.h create mode 100644 lib/asn/asn1c/S1ap-TargeteNB-ToSourceeNB-TransparentContainer.c create mode 100644 lib/asn/asn1c/S1ap-TargeteNB-ToSourceeNB-TransparentContainer.h create mode 100644 lib/asn/asn1c/S1ap-Threshold-RSRP.c create mode 100644 lib/asn/asn1c/S1ap-Threshold-RSRP.h create mode 100644 lib/asn/asn1c/S1ap-Threshold-RSRQ.c create mode 100644 lib/asn/asn1c/S1ap-Threshold-RSRQ.h create mode 100644 lib/asn/asn1c/S1ap-ThresholdEventA2.c create mode 100644 lib/asn/asn1c/S1ap-ThresholdEventA2.h create mode 100644 lib/asn/asn1c/S1ap-Time-UE-StayedInCell.c create mode 100644 lib/asn/asn1c/S1ap-Time-UE-StayedInCell.h create mode 100644 lib/asn/asn1c/S1ap-TimeSynchronizationInfo.c create mode 100644 lib/asn/asn1c/S1ap-TimeSynchronizationInfo.h create mode 100644 lib/asn/asn1c/S1ap-TimeToWait.c create mode 100644 lib/asn/asn1c/S1ap-TimeToWait.h create mode 100644 lib/asn/asn1c/S1ap-TraceActivation.c create mode 100644 lib/asn/asn1c/S1ap-TraceActivation.h create mode 100644 lib/asn/asn1c/S1ap-TraceDepth.c create mode 100644 lib/asn/asn1c/S1ap-TraceDepth.h create mode 100644 lib/asn/asn1c/S1ap-TraceFailureIndication.c create mode 100644 lib/asn/asn1c/S1ap-TraceFailureIndication.h create mode 100644 lib/asn/asn1c/S1ap-TraceStart.c create mode 100644 lib/asn/asn1c/S1ap-TraceStart.h create mode 100644 lib/asn/asn1c/S1ap-TrafficLoadReductionIndication.c create mode 100644 lib/asn/asn1c/S1ap-TrafficLoadReductionIndication.h create mode 100644 lib/asn/asn1c/S1ap-TransportLayerAddress.c create mode 100644 lib/asn/asn1c/S1ap-TransportLayerAddress.h create mode 100644 lib/asn/asn1c/S1ap-TriggeringMessage.c create mode 100644 lib/asn/asn1c/S1ap-TriggeringMessage.h create mode 100644 lib/asn/asn1c/S1ap-TypeOfError.c create mode 100644 lib/asn/asn1c/S1ap-TypeOfError.h create mode 100644 lib/asn/asn1c/S1ap-UE-HistoryInformation.c create mode 100644 lib/asn/asn1c/S1ap-UE-HistoryInformation.h create mode 100644 lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.c create mode 100644 lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.h create mode 100644 lib/asn/asn1c/S1ap-UE-S1AP-IDs.c create mode 100644 lib/asn/asn1c/S1ap-UE-S1AP-IDs.h create mode 100644 lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionItem.c create mode 100644 lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionItem.h create mode 100644 lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListRes.c create mode 100644 lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListRes.h create mode 100644 lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListResAck.c create mode 100644 lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListResAck.h create mode 100644 lib/asn/asn1c/S1ap-UEAggregateMaximumBitrate.c create mode 100644 lib/asn/asn1c/S1ap-UEAggregateMaximumBitrate.h create mode 100644 lib/asn/asn1c/S1ap-UECapabilityInfoIndication.c create mode 100644 lib/asn/asn1c/S1ap-UECapabilityInfoIndication.h create mode 100644 lib/asn/asn1c/S1ap-UEContextModificationFailure.c create mode 100644 lib/asn/asn1c/S1ap-UEContextModificationFailure.h create mode 100644 lib/asn/asn1c/S1ap-UEContextModificationRequest.c create mode 100644 lib/asn/asn1c/S1ap-UEContextModificationRequest.h create mode 100644 lib/asn/asn1c/S1ap-UEContextModificationResponse.c create mode 100644 lib/asn/asn1c/S1ap-UEContextModificationResponse.h create mode 100644 lib/asn/asn1c/S1ap-UEContextReleaseCommand.c create mode 100644 lib/asn/asn1c/S1ap-UEContextReleaseCommand.h create mode 100644 lib/asn/asn1c/S1ap-UEContextReleaseComplete.c create mode 100644 lib/asn/asn1c/S1ap-UEContextReleaseComplete.h create mode 100644 lib/asn/asn1c/S1ap-UEContextReleaseRequest.c create mode 100644 lib/asn/asn1c/S1ap-UEContextReleaseRequest.h create mode 100644 lib/asn/asn1c/S1ap-UEIdentityIndexValue.c create mode 100644 lib/asn/asn1c/S1ap-UEIdentityIndexValue.h create mode 100644 lib/asn/asn1c/S1ap-UEPagingID.c create mode 100644 lib/asn/asn1c/S1ap-UEPagingID.h create mode 100644 lib/asn/asn1c/S1ap-UERadioCapability.c create mode 100644 lib/asn/asn1c/S1ap-UERadioCapability.h create mode 100644 lib/asn/asn1c/S1ap-UESecurityCapabilities.c create mode 100644 lib/asn/asn1c/S1ap-UESecurityCapabilities.h create mode 100644 lib/asn/asn1c/S1ap-UnsuccessfulOutcome.c create mode 100644 lib/asn/asn1c/S1ap-UnsuccessfulOutcome.h create mode 100644 lib/asn/asn1c/S1ap-UplinkNASTransport.c create mode 100644 lib/asn/asn1c/S1ap-UplinkNASTransport.h create mode 100644 lib/asn/asn1c/S1ap-UplinkNonUEAssociatedLPPaTransport.c create mode 100644 lib/asn/asn1c/S1ap-UplinkNonUEAssociatedLPPaTransport.h create mode 100644 lib/asn/asn1c/S1ap-UplinkS1cdma2000tunneling.c create mode 100644 lib/asn/asn1c/S1ap-UplinkS1cdma2000tunneling.h create mode 100644 lib/asn/asn1c/S1ap-UplinkUEAssociatedLPPaTransport.c create mode 100644 lib/asn/asn1c/S1ap-UplinkUEAssociatedLPPaTransport.h create mode 100644 lib/asn/asn1c/S1ap-WarningAreaList.c create mode 100644 lib/asn/asn1c/S1ap-WarningAreaList.h create mode 100644 lib/asn/asn1c/S1ap-WarningMessageContents.c create mode 100644 lib/asn/asn1c/S1ap-WarningMessageContents.h create mode 100644 lib/asn/asn1c/S1ap-WarningSecurityInfo.c create mode 100644 lib/asn/asn1c/S1ap-WarningSecurityInfo.h create mode 100644 lib/asn/asn1c/S1ap-WarningType.c create mode 100644 lib/asn/asn1c/S1ap-WarningType.h create mode 100644 lib/asn/asn1c/S1ap-WriteReplaceWarningRequest.c create mode 100644 lib/asn/asn1c/S1ap-WriteReplaceWarningRequest.h create mode 100644 lib/asn/asn1c/S1ap-WriteReplaceWarningResponse.c create mode 100644 lib/asn/asn1c/S1ap-WriteReplaceWarningResponse.h create mode 100644 lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.c create mode 100644 lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.h create mode 100644 lib/asn/asn1c/asn_SEQUENCE_OF.c create mode 100644 lib/asn/asn1c/asn_SEQUENCE_OF.h create mode 100644 lib/asn/asn1c/asn_SET_OF.c create mode 100644 lib/asn/asn1c/asn_SET_OF.h create mode 100644 lib/asn/asn1c/asn_application.h create mode 100644 lib/asn/asn1c/asn_codecs.h create mode 100644 lib/asn/asn1c/asn_codecs_prim.c create mode 100644 lib/asn/asn1c/asn_codecs_prim.h create mode 100644 lib/asn/asn1c/asn_internal.h create mode 100644 lib/asn/asn1c/asn_system.h create mode 100644 lib/asn/asn1c/ber_decoder.c create mode 100644 lib/asn/asn1c/ber_decoder.h create mode 100644 lib/asn/asn1c/ber_tlv_length.c create mode 100644 lib/asn/asn1c/ber_tlv_length.h create mode 100644 lib/asn/asn1c/ber_tlv_tag.c create mode 100644 lib/asn/asn1c/ber_tlv_tag.h create mode 100644 lib/asn/asn1c/constr_CHOICE.c create mode 100644 lib/asn/asn1c/constr_CHOICE.h create mode 100644 lib/asn/asn1c/constr_SEQUENCE.c create mode 100644 lib/asn/asn1c/constr_SEQUENCE.h create mode 100644 lib/asn/asn1c/constr_SEQUENCE_OF.c create mode 100644 lib/asn/asn1c/constr_SEQUENCE_OF.h create mode 100644 lib/asn/asn1c/constr_SET_OF.c create mode 100644 lib/asn/asn1c/constr_SET_OF.h create mode 100644 lib/asn/asn1c/constr_TYPE.c create mode 100644 lib/asn/asn1c/constr_TYPE.h create mode 100644 lib/asn/asn1c/constraints.c create mode 100644 lib/asn/asn1c/constraints.h create mode 100644 lib/asn/asn1c/der_encoder.c create mode 100644 lib/asn/asn1c/der_encoder.h create mode 100644 lib/asn/asn1c/per_decoder.c create mode 100644 lib/asn/asn1c/per_decoder.h create mode 100644 lib/asn/asn1c/per_encoder.c create mode 100644 lib/asn/asn1c/per_encoder.h create mode 100644 lib/asn/asn1c/per_opentype.c create mode 100644 lib/asn/asn1c/per_opentype.h create mode 100644 lib/asn/asn1c/per_support.c create mode 100644 lib/asn/asn1c/per_support.h create mode 100644 lib/asn/asn1c/xer_decoder.c create mode 100644 lib/asn/asn1c/xer_decoder.h create mode 100644 lib/asn/asn1c/xer_encoder.c create mode 100644 lib/asn/asn1c/xer_encoder.h create mode 100644 lib/asn/asn1c/xer_support.c create mode 100644 lib/asn/asn1c/xer_support.h create mode 100644 lib/asn/s1ap_common.c create mode 100644 lib/asn/s1ap_common.h create mode 100644 lib/asn/s1ap_decoder.c create mode 100644 lib/asn/s1ap_encoder.c create mode 100644 lib/asn/s1ap_ies_defs.h create mode 100644 lib/asn/s1ap_xer_print.c create mode 100644 lib/asn/support/S1AP-PDU.asn diff --git a/configure.ac b/configure.ac index 22c1236577..dcf25653d8 100644 --- a/configure.ac +++ b/configure.ac @@ -244,11 +244,8 @@ AC_SUBST(OSLIBS) #### Conclusion. #### ##################### -AC_CONFIG_FILES([Makefile]) -AC_CONFIG_FILES([src/Makefile]) AC_CONFIG_FILES([lib/Makefile]) AC_CONFIG_FILES([lib/core/include/core.h]) -AC_CONFIG_FILES([lib/core/Makefile]) AC_CONFIG_FILES([lib/core/src/Makefile]) case $host in *) @@ -256,7 +253,12 @@ case $host in ;; esac AC_CONFIG_FILES([lib/core/test/Makefile]) +AC_CONFIG_FILES([lib/core/Makefile]) AC_CONFIG_FILES([lib/logger/Makefile]) +AC_CONFIG_FILES([lib/asn/asn1c/Makefile]) +AC_CONFIG_FILES([lib/asn/Makefile]) +AC_CONFIG_FILES([src/Makefile]) +AC_CONFIG_FILES([Makefile]) AC_OUTPUT echo " diff --git a/lib/Makefile.am b/lib/Makefile.am index daf6814646..84f8e1df2b 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -SUBDIRS = core logger +SUBDIRS = core logger asn MAINTAINERCLEANFILES = Makefile.in MOSTLYCLEANFILES = *.stackdump diff --git a/lib/asn/Makefile.am b/lib/asn/Makefile.am new file mode 100644 index 0000000000..31b519533c --- /dev/null +++ b/lib/asn/Makefile.am @@ -0,0 +1,33 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = asn1c + +noinst_LTLIBRARIES = libasn.la + +libasn_la_SOURCES = \ + s1ap_ies_defs.h s1ap_common.h + +nodist_libasn_la_SOURCES = \ + s1ap_encoder.c s1ap_decoder.c s1ap_xer_print.c \ + s1ap_common.c + +libasn_la_DEPENDENCIES = \ + $(top_srcdir)/lib/core/src/libcore.la \ + $(top_srcdir)/lib/core/src/@OSDIR@/libcore@OSDIR@.la + +libasn_la_LIBADD = \ + $(top_srcdir)/lib/core/src/libcore.la \ + $(top_srcdir)/lib/core/src/@OSDIR@/libcore@OSDIR@.la + +AM_CPPFLAGS = \ + -I$(top_srcdir)/lib/core/include/arch/@OSDIR@ \ + -I$(top_srcdir)/lib/core/include \ + -I$(top_srcdir)/lib/asn/asn1c + +AM_CFLAGS = \ + -Wall -Werror + +MAINTAINERCLEANFILES = Makefile.in +MOSTLYCLEANFILES = *.stackdump + +EXTRA_DIST = .libs $(noinst_LTLIBRARIES) diff --git a/lib/asn/README b/lib/asn/README new file mode 100644 index 0000000000..7c78f78892 --- /dev/null +++ b/lib/asn/README @@ -0,0 +1,19 @@ +* Use AuthenticEshkinKot's fork for asn1c +user@host ~/Documents/git/AuthenticEshkinKot$ \ + git clone https://github.com/AuthenticEshkinKot/asn1c.git +user@host Documents/~/git/AuthenticEshkinKot$ \ + autoreconf -iv;./configure;make + +* Add prefix S1AP to the 3GPP S1AP specification +user@host ~/Documents/git/cellwire/lib/asn/support$ \ + python asn1prefix.py -i 36413-a90.asn -o S1AP-PDU.asn + +* ASN.1 encoder/decoder +user@host ~/Documents/git/cellwire/lib/asn/asn1c$ \ + ../../../../AuthenticEshkinKot/asn1c/asn1c/asn1c \ + -fcompound-names -gen-PER ../support/S1AP-PDU.asn + +* EUROCOM S1AP-IEs support files +user@host ~/Documents/git/cellwire/lib/asn/support$ \ + python asn1tostruct.py -f S1AP-PDU.asn -o .. + diff --git a/lib/asn/asn1c/ANY.c b/lib/asn/asn1c/ANY.c new file mode 100644 index 0000000000..128b5507b3 --- /dev/null +++ b/lib/asn/asn1c/ANY.c @@ -0,0 +1,243 @@ +/*- + * Copyright (c) 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_OCTET_STRING_specifics_t asn_DEF_ANY_specs = { + sizeof(ANY_t), + offsetof(ANY_t, _asn_ctx), + ASN_OSUBV_ANY +}; +asn_TYPE_descriptor_t asn_DEF_ANY = { + "ANY", + "ANY", + OCTET_STRING_free, + OCTET_STRING_print, + asn_generic_no_constraint, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 0, 0, 0, 0, + 0, /* No PER visible constraints */ + 0, 0, /* No members */ + &asn_DEF_ANY_specs, +}; + + +asn_enc_rval_t +ANY_encode_xer(asn_TYPE_descriptor_t *td, 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->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; +} + diff --git a/lib/asn/asn1c/ANY.h b/lib/asn/asn1c/ANY.h new file mode 100644 index 0000000000..a68441dfe0 --- /dev/null +++ b/lib/asn/asn1c/ANY.h @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2004 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; + +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; + +/****************************** + * 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/asn/asn1c/BIT_STRING.c b/lib/asn/asn1c/BIT_STRING.c new file mode 100644 index 0000000000..d32a12fcf7 --- /dev/null +++ b/lib/asn/asn1c/BIT_STRING.c @@ -0,0 +1,191 @@ +/*- + * 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)) +}; +static asn_OCTET_STRING_specifics_t asn_DEF_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ + BIT_STRING_print, + BIT_STRING_constraint, + 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, + 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 */ + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + &asn_DEF_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(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 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(asn_TYPE_descriptor_t *td, 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) { + er.encoded += p - scratch; + 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); + er.encoded += p - scratch; + 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; + er.encoded += p - scratch; + 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(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; + } + + return 0; +} + diff --git a/lib/asn/asn1c/BIT_STRING.h b/lib/asn/asn1c/BIT_STRING.h new file mode 100644 index 0000000000..732e878bca --- /dev/null +++ b/lib/asn/asn1c/BIT_STRING.h @@ -0,0 +1,33 @@ +/*- + * Copyright (c) 2003 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 */ + int 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; + +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +asn_constr_check_f BIT_STRING_constraint; +xer_type_encoder_f BIT_STRING_encode_xer; + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/lib/asn/asn1c/BOOLEAN.c b/lib/asn/asn1c/BOOLEAN.c new file mode 100644 index 0000000000..dbecbafd13 --- /dev/null +++ b/lib/asn/asn1c/BOOLEAN.c @@ -0,0 +1,328 @@ +/*- + * 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_descriptor_t asn_DEF_BOOLEAN = { + "BOOLEAN", + "BOOLEAN", + BOOLEAN_free, + BOOLEAN_print, + asn_generic_no_constraint, + BOOLEAN_decode_ber, + BOOLEAN_encode_der, + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, + 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(asn_TYPE_descriptor_t *td, void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval; + BOOLEAN_t *st = (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(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(asn_codec_ctx_t *opt_codec_ctx, + 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(asn_TYPE_descriptor_t *td, 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; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("", 7); + er.encoded = 7; + } else { + ASN__CALLBACK("", 8); + er.encoded = 8; + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +int +BOOLEAN_print(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(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) { + if(td && ptr && !contents_only) { + FREEMEM(ptr); + } +} + +asn_dec_rval_t +BOOLEAN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + 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; + + 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_dec_rval_t +BOOLEAN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + 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; + + 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(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, 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_enc_rval_t +BOOLEAN_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, 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); +} diff --git a/lib/asn/asn1c/BOOLEAN.h b/lib/asn/asn1c/BOOLEAN.h new file mode 100644 index 0000000000..8ea28928bb --- /dev/null +++ b/lib/asn/asn1c/BOOLEAN.h @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2003 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; + +asn_struct_free_f BOOLEAN_free; +asn_struct_print_f BOOLEAN_print; +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.c b/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.c new file mode 100644 index 0000000000..b67b4349f0 --- /dev/null +++ b/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.c @@ -0,0 +1,927 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "E-RAB-S1ap-IE-ContainerList.h" + +int +E_RAB_S1ap_IE_ContainerList_992P0_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +E_RAB_S1ap_IE_ContainerList_992P0_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +E_RAB_S1ap_IE_ContainerList_992P0_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P0_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P0_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P0_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P0_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P0_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P0_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P0_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P0_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P0_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +E_RAB_S1ap_IE_ContainerList_992P1_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +E_RAB_S1ap_IE_ContainerList_992P1_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +E_RAB_S1ap_IE_ContainerList_992P1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P1_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P1_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P1_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P1_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P1_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P1_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P1_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P1_2_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +E_RAB_S1ap_IE_ContainerList_992P2_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +E_RAB_S1ap_IE_ContainerList_992P2_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +E_RAB_S1ap_IE_ContainerList_992P2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P2_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P2_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P2_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P2_3_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +E_RAB_S1ap_IE_ContainerList_992P3_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +E_RAB_S1ap_IE_ContainerList_992P3_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +E_RAB_S1ap_IE_ContainerList_992P3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P3_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P3_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P3_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P3_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P3_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P3_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P3_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P3_4_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +E_RAB_S1ap_IE_ContainerList_992P4_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +E_RAB_S1ap_IE_ContainerList_992P4_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +E_RAB_S1ap_IE_ContainerList_992P4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P4_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P4_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P4_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P4_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P4_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P4_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P4_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P4_5_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +E_RAB_S1ap_IE_ContainerList_992P5_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +E_RAB_S1ap_IE_ContainerList_992P5_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +E_RAB_S1ap_IE_ContainerList_992P5_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P5_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P5_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P5_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P5_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P5_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P5_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +E_RAB_S1ap_IE_ContainerList_992P5_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +E_RAB_S1ap_IE_ContainerList_992P5_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + E_RAB_S1ap_IE_ContainerList_992P5_6_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static const ber_tlv_tag_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0 = { + "E-RAB-S1ap-IE-ContainerList", + "E-RAB-S1ap-IE-ContainerList", + E_RAB_S1ap_IE_ContainerList_992P0_free, + E_RAB_S1ap_IE_ContainerList_992P0_print, + E_RAB_S1ap_IE_ContainerList_992P0_constraint, + E_RAB_S1ap_IE_ContainerList_992P0_decode_ber, + E_RAB_S1ap_IE_ContainerList_992P0_encode_der, + E_RAB_S1ap_IE_ContainerList_992P0_decode_xer, + E_RAB_S1ap_IE_ContainerList_992P0_encode_xer, + E_RAB_S1ap_IE_ContainerList_992P0_decode_uper, + E_RAB_S1ap_IE_ContainerList_992P0_encode_uper, + E_RAB_S1ap_IE_ContainerList_992P0_decode_aper, + E_RAB_S1ap_IE_ContainerList_992P0_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0_tags_1, + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0_tags_1) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0_tags_1) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1 = { + "E-RAB-S1ap-IE-ContainerList", + "E-RAB-S1ap-IE-ContainerList", + E_RAB_S1ap_IE_ContainerList_992P1_free, + E_RAB_S1ap_IE_ContainerList_992P1_print, + E_RAB_S1ap_IE_ContainerList_992P1_constraint, + E_RAB_S1ap_IE_ContainerList_992P1_decode_ber, + E_RAB_S1ap_IE_ContainerList_992P1_encode_der, + E_RAB_S1ap_IE_ContainerList_992P1_decode_xer, + E_RAB_S1ap_IE_ContainerList_992P1_encode_xer, + E_RAB_S1ap_IE_ContainerList_992P1_decode_uper, + E_RAB_S1ap_IE_ContainerList_992P1_encode_uper, + E_RAB_S1ap_IE_ContainerList_992P1_decode_aper, + E_RAB_S1ap_IE_ContainerList_992P1_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1_tags_2, + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1_tags_2) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1_tags_2[0]), /* 1 */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1_tags_2, /* Same as above */ + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1_tags_2) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1_tags_2[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2 = { + "E-RAB-S1ap-IE-ContainerList", + "E-RAB-S1ap-IE-ContainerList", + E_RAB_S1ap_IE_ContainerList_992P2_free, + E_RAB_S1ap_IE_ContainerList_992P2_print, + E_RAB_S1ap_IE_ContainerList_992P2_constraint, + E_RAB_S1ap_IE_ContainerList_992P2_decode_ber, + E_RAB_S1ap_IE_ContainerList_992P2_encode_der, + E_RAB_S1ap_IE_ContainerList_992P2_decode_xer, + E_RAB_S1ap_IE_ContainerList_992P2_encode_xer, + E_RAB_S1ap_IE_ContainerList_992P2_decode_uper, + E_RAB_S1ap_IE_ContainerList_992P2_encode_uper, + E_RAB_S1ap_IE_ContainerList_992P2_decode_aper, + E_RAB_S1ap_IE_ContainerList_992P2_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2_tags_3, + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2_tags_3) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2_tags_3[0]), /* 1 */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2_tags_3, /* Same as above */ + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2_tags_3) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2_tags_3[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3 = { + "E-RAB-S1ap-IE-ContainerList", + "E-RAB-S1ap-IE-ContainerList", + E_RAB_S1ap_IE_ContainerList_992P3_free, + E_RAB_S1ap_IE_ContainerList_992P3_print, + E_RAB_S1ap_IE_ContainerList_992P3_constraint, + E_RAB_S1ap_IE_ContainerList_992P3_decode_ber, + E_RAB_S1ap_IE_ContainerList_992P3_encode_der, + E_RAB_S1ap_IE_ContainerList_992P3_decode_xer, + E_RAB_S1ap_IE_ContainerList_992P3_encode_xer, + E_RAB_S1ap_IE_ContainerList_992P3_decode_uper, + E_RAB_S1ap_IE_ContainerList_992P3_encode_uper, + E_RAB_S1ap_IE_ContainerList_992P3_decode_aper, + E_RAB_S1ap_IE_ContainerList_992P3_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3_tags_4, + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3_tags_4) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3_tags_4[0]), /* 1 */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3_tags_4, /* Same as above */ + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3_tags_4) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3_tags_4[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4 = { + "E-RAB-S1ap-IE-ContainerList", + "E-RAB-S1ap-IE-ContainerList", + E_RAB_S1ap_IE_ContainerList_992P4_free, + E_RAB_S1ap_IE_ContainerList_992P4_print, + E_RAB_S1ap_IE_ContainerList_992P4_constraint, + E_RAB_S1ap_IE_ContainerList_992P4_decode_ber, + E_RAB_S1ap_IE_ContainerList_992P4_encode_der, + E_RAB_S1ap_IE_ContainerList_992P4_decode_xer, + E_RAB_S1ap_IE_ContainerList_992P4_encode_xer, + E_RAB_S1ap_IE_ContainerList_992P4_decode_uper, + E_RAB_S1ap_IE_ContainerList_992P4_encode_uper, + E_RAB_S1ap_IE_ContainerList_992P4_decode_aper, + E_RAB_S1ap_IE_ContainerList_992P4_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4_tags_5, + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4_tags_5) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4_tags_5[0]), /* 1 */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4_tags_5, /* Same as above */ + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4_tags_5) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4_tags_5[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5 = { + "E-RAB-S1ap-IE-ContainerList", + "E-RAB-S1ap-IE-ContainerList", + E_RAB_S1ap_IE_ContainerList_992P5_free, + E_RAB_S1ap_IE_ContainerList_992P5_print, + E_RAB_S1ap_IE_ContainerList_992P5_constraint, + E_RAB_S1ap_IE_ContainerList_992P5_decode_ber, + E_RAB_S1ap_IE_ContainerList_992P5_encode_der, + E_RAB_S1ap_IE_ContainerList_992P5_decode_xer, + E_RAB_S1ap_IE_ContainerList_992P5_encode_xer, + E_RAB_S1ap_IE_ContainerList_992P5_decode_uper, + E_RAB_S1ap_IE_ContainerList_992P5_encode_uper, + E_RAB_S1ap_IE_ContainerList_992P5_decode_aper, + E_RAB_S1ap_IE_ContainerList_992P5_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5_tags_6, + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5_tags_6) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5_tags_6[0]), /* 1 */ + asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5_tags_6, /* Same as above */ + sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5_tags_6) + /sizeof(asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5_tags_6[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.h b/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.h new file mode 100644 index 0000000000..900c3b4c42 --- /dev/null +++ b/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerList.h @@ -0,0 +1,108 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _E_RAB_S1ap_IE_ContainerList_H_ +#define _E_RAB_S1ap_IE_ContainerList_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E-RAB-S1ap-IE-ContainerList */ +typedef ProtocolIE_ContainerList_5732P0_t E_RAB_S1ap_IE_ContainerList_992P0_t; +typedef ProtocolIE_ContainerList_5732P0_t E_RAB_S1ap_IE_ContainerList_992P1_t; +typedef ProtocolIE_ContainerList_5732P0_t E_RAB_S1ap_IE_ContainerList_992P2_t; +typedef ProtocolIE_ContainerList_5732P0_t E_RAB_S1ap_IE_ContainerList_992P3_t; +typedef ProtocolIE_ContainerList_5732P0_t E_RAB_S1ap_IE_ContainerList_992P4_t; +typedef ProtocolIE_ContainerList_5732P0_t E_RAB_S1ap_IE_ContainerList_992P5_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P0; +asn_struct_free_f E_RAB_S1ap_IE_ContainerList_992P0_free; +asn_struct_print_f E_RAB_S1ap_IE_ContainerList_992P0_print; +asn_constr_check_f E_RAB_S1ap_IE_ContainerList_992P0_constraint; +ber_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P0_decode_ber; +der_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P0_encode_der; +xer_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P0_decode_xer; +xer_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P0_encode_xer; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P0_decode_uper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P0_encode_uper; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P0_decode_aper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P0_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P1; +asn_struct_free_f E_RAB_S1ap_IE_ContainerList_992P1_free; +asn_struct_print_f E_RAB_S1ap_IE_ContainerList_992P1_print; +asn_constr_check_f E_RAB_S1ap_IE_ContainerList_992P1_constraint; +ber_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P1_decode_ber; +der_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P1_encode_der; +xer_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P1_decode_xer; +xer_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P1_encode_xer; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P1_decode_uper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P1_encode_uper; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P1_decode_aper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P1_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P2; +asn_struct_free_f E_RAB_S1ap_IE_ContainerList_992P2_free; +asn_struct_print_f E_RAB_S1ap_IE_ContainerList_992P2_print; +asn_constr_check_f E_RAB_S1ap_IE_ContainerList_992P2_constraint; +ber_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P2_decode_ber; +der_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P2_encode_der; +xer_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P2_decode_xer; +xer_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P2_encode_xer; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P2_decode_uper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P2_encode_uper; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P2_decode_aper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P2_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P3; +asn_struct_free_f E_RAB_S1ap_IE_ContainerList_992P3_free; +asn_struct_print_f E_RAB_S1ap_IE_ContainerList_992P3_print; +asn_constr_check_f E_RAB_S1ap_IE_ContainerList_992P3_constraint; +ber_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P3_decode_ber; +der_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P3_encode_der; +xer_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P3_decode_xer; +xer_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P3_encode_xer; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P3_decode_uper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P3_encode_uper; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P3_decode_aper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P3_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P4; +asn_struct_free_f E_RAB_S1ap_IE_ContainerList_992P4_free; +asn_struct_print_f E_RAB_S1ap_IE_ContainerList_992P4_print; +asn_constr_check_f E_RAB_S1ap_IE_ContainerList_992P4_constraint; +ber_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P4_decode_ber; +der_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P4_encode_der; +xer_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P4_decode_xer; +xer_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P4_encode_xer; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P4_decode_uper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P4_encode_uper; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P4_decode_aper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P4_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_S1ap_IE_ContainerList_992P5; +asn_struct_free_f E_RAB_S1ap_IE_ContainerList_992P5_free; +asn_struct_print_f E_RAB_S1ap_IE_ContainerList_992P5_print; +asn_constr_check_f E_RAB_S1ap_IE_ContainerList_992P5_constraint; +ber_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P5_decode_ber; +der_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P5_encode_der; +xer_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P5_decode_xer; +xer_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P5_encode_xer; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P5_decode_uper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P5_encode_uper; +per_type_decoder_f E_RAB_S1ap_IE_ContainerList_992P5_decode_aper; +per_type_encoder_f E_RAB_S1ap_IE_ContainerList_992P5_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_S1ap_IE_ContainerList_H_ */ +#include diff --git a/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerPairList.c b/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerPairList.c new file mode 100644 index 0000000000..ba55b010b2 --- /dev/null +++ b/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerPairList.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "E-RAB-S1ap-IE-ContainerPairList.h" + diff --git a/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerPairList.h b/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerPairList.h new file mode 100644 index 0000000000..3be72f4ce9 --- /dev/null +++ b/lib/asn/asn1c/E-RAB-S1ap-IE-ContainerPairList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _E_RAB_S1ap_IE_ContainerPairList_H_ +#define _E_RAB_S1ap_IE_ContainerPairList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_S1ap_IE_ContainerPairList_H_ */ +#include diff --git a/lib/asn/asn1c/INTEGER.c b/lib/asn/asn1c/INTEGER.c new file mode 100644 index 0000000000..a5fbc20b42 --- /dev/null +++ b/lib/asn/asn1c/INTEGER.c @@ -0,0 +1,1492 @@ +/*- + * 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_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + ASN__PRIMITIVE_TYPE_free, + INTEGER_print, + asn_generic_no_constraint, + ber_decode_primitive, + INTEGER_encode_der, + INTEGER_decode_xer, + INTEGER_encode_xer, +#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, + INTEGER_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(asn_TYPE_descriptor_t *td, void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + INTEGER_t *st = (INTEGER_t *)sptr; + + 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) { + uint8_t *nb = st->buf; + uint8_t *end; + + st->size -= shift; /* New size, minus bad bytes */ + end = nb + st->size; + + for(; nb < end; nb++, buf++) + *nb = *buf; + } + + } /* if(1) */ + + return der_encode_primitive(td, sptr, tag_mode, tag, cb, app_key); +} + +static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value(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) { + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit integer */ + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + signed long long value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2ulong(st, (unsigned long long *)&value); + else + ret = asn_INTEGER2long(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + size_t scrsize; + char *scr; + + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + scrsize = el->enum_len + 32; + scr = (char *)alloca(scrsize); + if(plainOrXER == 0) + ret = snprintf(scr, scrsize, + "%lld (%s)", value, el->enum_name); + else + ret = snprintf(scr, scrsize, + "<%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 { + scrsize = sizeof(scratch); + scr = scratch; + ret = snprintf(scr, scrsize, + (specs && specs->field_unsigned) + ?"%llu":"%lld", value); + } + assert(ret > 0 && (size_t)ret < scrsize); + return (cb(scr, ret, app_key) < 0) ? -1 : ret; + } 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(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)td; + (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) + return *(const unsigned char *)ptr + - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(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 long a = *(const long long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long 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(asn_INTEGER_specifics_t *specs, long 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(asn_TYPE_descriptor_t *td, void *sptr, const void *chunk_buf, size_t chunk_size) { + INTEGER_t *st = (INTEGER_t *)sptr; + long long dec_value; + long 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( + (asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %lld", + 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_strtol_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOL_OK: + break; + case ASN_STRTOL_ERROR_RANGE: + return XPBD_DECODER_LIMIT; + case ASN_STRTOL_ERROR_INVAL: + case ASN_STRTOL_EXPECT_MORE: + case ASN_STRTOL_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_long2INTEGER(st, dec_value)) + return XPBD_SYSTEM_FAILURE; + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(asn_codec_ctx_t *opt_codec_ctx, + 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(asn_TYPE_descriptor_t *td, 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(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + 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->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 long)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + unsigned long long uvalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %llu + low %lld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_ulong2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + unsigned long long svalue; + if(uper_get_constrained_whole_number(pd, + &svalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lld + low %lld", + svalue, ct->lower_bound); + svalue += ct->lower_bound; + if(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; + void *p; + int ret; + + /* Get the PER length */ + len = uper_get_length(pd, -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 long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_dec_rval_t +INTEGER_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + 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->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 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 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 %lld + low %lld", + value, ct->lower_bound); + } else { + long 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 %lld + low %lld", + 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 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_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + INTEGER_t *st = (INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + asn_per_constraint_t *ct; + long long value = 0; + unsigned long long v = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long long)ct->lower_bound + || uval > (unsigned long long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %llu (%02x/%d) lb %llu ub %llu %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 %lld (%02x/%d) lb %lld ub %lld %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) { + /* #11.5.6 -> #11.3 */ + ASN_DEBUG("Encoding integer %lld (%llu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + v = value - ct->lower_bound; + 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 %lld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + ssize_t mayEncode = uper_put_length(po, 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); +} + +asn_enc_rval_t +INTEGER_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + INTEGER_t *st = (INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + asn_per_constraint_t *ct; + long long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long long)ct->lower_bound + || uval > (unsigned long long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %llu (%02x/%d) lb %llu ub %llu %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 %lld (%02x/%d) lb %lld ub %lld %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) { + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %lld (%llu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + unsigned long long 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 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 %lld", 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 */ + +int +asn_INTEGER2int64(const INTEGER_t *iptr, int64_t *lptr) { + uint8_t *b, *end; + size_t size; + int64_t l; + + /* 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(int64_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to >sizeof(int64_t) bytes, + * when the actual value is small + * (0x0000000000abcdef would yield a fine 0x00abcdef) + */ + /* 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(int64_t)) { + /* Still cannot fit the int64_t */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + /* Perform the sign initialization */ + /* Actually l = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) l = -1; else l = 0; + + /* Conversion engine */ + for(; b < end; b++) + l = (l << 8) | *b; + + *lptr = l; + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long long *lptr) { + uint8_t *b, *end; + size_t size; + long long l; + + /* 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(long long)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to >sizeof(long) bytes, + * when the actual value is small + * (0x0000000000abcdef would yield a fine 0x00abcdef) + */ + /* 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(long long)) { + /* Still cannot fit the long */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + /* Perform the sign initialization */ + /* Actually l = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) l = -1; else l = 0; + + /* Conversion engine */ + for(; b < end; b++) + l = (l << 8) | *b; + + *lptr = l; + return 0; +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long long *lptr) { + uint8_t *b, *end; + unsigned long long l; + 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(unsigned long long); b++, size--) { + if(*b) { + /* Value won't fit unsigned long */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(l = 0; b < end; b++) + l = (l << 8) | *b; + + *lptr = l; + return 0; +} + +int +asn_INTEGER2uint64(const INTEGER_t *iptr, uint64_t *lptr) { + uint8_t *b, *end; + uint64_t l; + 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(uint64_t); b++, size--) { + if(*b) { + /* Value won't fit unsigned long */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(l = 0; b < end; b++) + l = (l << 8) | *b; + + *lptr = l; + return 0; +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long long value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= LLONG_MAX) + return asn_long2INTEGER(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(long long)-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_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; +} + +int +asn_long2INTEGER(INTEGER_t *st, long long 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; +} + +/* + * This function is going to be DEPRECATED soon. + */ +enum asn_strtol_result_e +asn_strtol(const char *str, const char *end, long long *lp) { + const char *endp = end; + + switch(asn_strtol_lim(str, &endp, lp)) { + case ASN_STRTOL_ERROR_RANGE: + return ASN_STRTOL_ERROR_RANGE; + case ASN_STRTOL_ERROR_INVAL: + return ASN_STRTOL_ERROR_INVAL; + case ASN_STRTOL_EXPECT_MORE: + return ASN_STRTOL_ERROR_INVAL; /* Retain old behavior */ + case ASN_STRTOL_OK: + return ASN_STRTOL_OK; + case ASN_STRTOL_EXTRA_DATA: + return ASN_STRTOL_ERROR_INVAL; /* Retain old behavior */ + } + + return ASN_STRTOL_ERROR_INVAL; /* Retain old behavior */ +} + +/* + * 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(3). + */ +enum asn_strtol_result_e +asn_strtol_lim(const char *str, const char **end, long long *lp) { + int sign = 1; + long long l; + + const long long upper_boundary = LLONG_MAX / 10; + long long last_digit_max = LLONG_MAX % 10; + + if(str >= *end) return ASN_STRTOL_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOL_EXPECT_MORE; + } + } + + for(l = 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(l < upper_boundary) { + l = l * 10 + d; + } else if(l == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + l = l * 10 + d; + } else { + sign = 1; + l = -l * 10 - d; + } + } else { + *end = str; + return ASN_STRTOL_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOL_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *lp = sign * l; + return ASN_STRTOL_EXTRA_DATA; + } + } + + *end = str; + *lp = sign * l; + return ASN_STRTOL_OK; +} + diff --git a/lib/asn/asn1c/INTEGER.h b/lib/asn/asn1c/INTEGER.h new file mode 100644 index 0000000000..a5eac0c244 --- /dev/null +++ b/lib/asn/asn1c/INTEGER.h @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2003, 2005 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; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long 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 const 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; + +asn_struct_print_f INTEGER_print; +ber_type_decoder_f INTEGER_decode_ber; +der_type_encoder_f INTEGER_encode_der; +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +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; + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * 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_long2INTEGER()). + */ +int asn_INTEGER2int64(const INTEGER_t *i, int64_t *l); +int asn_INTEGER2uint64(const INTEGER_t *i, uint64_t *l); +int asn_INTEGER2long(const INTEGER_t *i, long long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long long *l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); +int asn_long2INTEGER(INTEGER_t *i, long long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long long l); + +/* A a reified version of strtol(3) with nicer error reporting. */ +enum asn_strtol_result_e { + ASN_STRTOL_ERROR_RANGE = -3, /* Input outside of numeric range for long type */ + ASN_STRTOL_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOL_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOL_OK = 0, /* Conversion succeded, number ends at (*end) */ + ASN_STRTOL_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ +}; +enum asn_strtol_result_e asn_strtol_lim(const char *str, const char **end, long long *l); + +/* The asn_strtol is going to be DEPRECATED soon */ +enum asn_strtol_result_e asn_strtol(const char *str, const char *end, long long *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum(asn_INTEGER_specifics_t *specs, long long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/lib/asn/asn1c/Makefile.am b/lib/asn/asn1c/Makefile.am new file mode 100644 index 0000000000..0104f441f9 --- /dev/null +++ b/lib/asn/asn1c/Makefile.am @@ -0,0 +1,827 @@ +ASN_MODULE_NODIST_SOURCES= \ + S1AP-PDU.c \ + S1ap-InitiatingMessage.c \ + S1ap-SuccessfulOutcome.c \ + S1ap-UnsuccessfulOutcome.c \ + E-RAB-S1ap-IE-ContainerList.c \ + E-RAB-S1ap-IE-ContainerPairList.c \ + ProtocolError-S1ap-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-DownlinkNASTransport.c \ + S1ap-InitialUEMessage.c \ + S1ap-UplinkNASTransport.c \ + S1ap-NASNonDeliveryIndication.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-DownlinkS1cdma2000tunneling.c \ + S1ap-UplinkS1cdma2000tunneling.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-DownlinkUEAssociatedLPPaTransport.c \ + S1ap-UplinkUEAssociatedLPPaTransport.c \ + S1ap-DownlinkNonUEAssociatedLPPaTransport.c \ + S1ap-UplinkNonUEAssociatedLPPaTransport.c \ + S1ap-AreaScopeOfMDT.c \ + S1ap-AllocationAndRetentionPriority.c \ + S1ap-Bearers-SubjectToStatusTransferList.c \ + S1ap-Bearers-SubjectToStatusTransfer-Item.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-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-CSG-Id.c \ + S1ap-CSG-IdList.c \ + S1ap-CSG-IdList-Item.c \ + S1ap-CSGMembershipStatus.c \ + S1ap-COUNTvalue.c \ + S1ap-CriticalityDiagnostics.c \ + S1ap-CriticalityDiagnostics-IE-List.c \ + S1ap-CriticalityDiagnostics-S1ap-IE-Item.c \ + S1ap-DataCodingScheme.c \ + S1ap-DL-Forwarding.c \ + S1ap-Direct-Forwarding-Path-Availability.c \ + S1ap-Data-Forwarding-Not-Possible.c \ + S1ap-ECGIList.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-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-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-ExtendedRNC-ID.c \ + S1ap-ExtendedRepetitionPeriod.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-GWContextReleaseIndication.c \ + S1ap-HandoverRestrictionList.c \ + S1ap-HandoverType.c \ + S1ap-HFN.c \ + S1ap-ImmediateMDT.c \ + S1ap-IMSI.c \ + S1ap-IntegrityProtectionAlgorithms.c \ + S1ap-InterfacesToTrace.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-LoggedMDT.c \ + S1ap-LoggingInterval.c \ + S1ap-LoggingDuration.c \ + S1ap-MDT-Activation.c \ + S1ap-MDT-Configuration.c \ + S1ap-ManagementBasedMDTAllowed.c \ + S1ap-PrivacyIndicator.c \ + S1ap-MDTMode.c \ + S1ap-MeasurementsToActivate.c \ + S1ap-MeasurementThresholdA2.c \ + S1ap-MessageIdentifier.c \ + S1ap-MMEname.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-NAS-PDU.c \ + S1ap-NASSecurityParametersfromE-UTRAN.c \ + S1ap-NASSecurityParameterstoE-UTRAN.c \ + S1ap-NumberofBroadcastRequest.c \ + S1ap-NumberOfBroadcasts.c \ + S1ap-OldBSS-ToNewBSS-Information.c \ + S1ap-OverloadAction.c \ + S1ap-OverloadResponse.c \ + S1ap-PagingDRX.c \ + S1ap-PagingPriority.c \ + S1ap-PDCP-SN.c \ + S1ap-PeriodicReportingMDT.c \ + S1ap-PLMNidentity.c \ + S1ap-Pre-emptionCapability.c \ + S1ap-Pre-emptionVulnerability.c \ + S1ap-PriorityLevel.c \ + S1ap-PS-ServiceNotAvailable.c \ + S1ap-QCI.c \ + S1ap-ReceiveStatusofULPDCPSDUs.c \ + S1ap-RelativeMMECapacity.c \ + S1ap-RelayNode-Indicator.c \ + S1ap-RAC.c \ + S1ap-ReportAmountMDT.c \ + S1ap-ReportIntervalMDT.c \ + S1ap-ReportingTriggerMDT.c \ + S1ap-RequestType.c \ + S1ap-RIMTransfer.c \ + S1ap-RIMInformation.c \ + S1ap-RIMRoutingAddress.c \ + S1ap-ReportArea.c \ + S1ap-RepetitionPeriod.c \ + S1ap-RNC-ID.c \ + S1ap-RRC-Container.c \ + S1ap-RRC-Establishment-Cause.c \ + S1ap-Routing-ID.c \ + S1ap-SecurityKey.c \ + S1ap-SecurityContext.c \ + S1ap-SerialNumber.c \ + S1ap-SONInformation.c \ + S1ap-SONInformationRequest.c \ + S1ap-SONInformationReply.c \ + S1ap-SONConfigurationTransfer.c \ + S1ap-Source-ToTarget-TransparentContainer.c \ + S1ap-SourceBSS-ToTargetBSS-TransparentContainer.c \ + S1ap-SourceeNB-ID.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-SynchronizationStatus.c \ + S1ap-TimeSynchronizationInfo.c \ + S1ap-S-TMSI.c \ + S1ap-TAC.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-ThresholdEventA2.c \ + S1ap-Threshold-RSRP.c \ + S1ap-Threshold-RSRQ.c \ + S1ap-TimeToWait.c \ + S1ap-Time-UE-StayedInCell.c \ + S1ap-TransportLayerAddress.c \ + S1ap-TraceActivation.c \ + S1ap-TraceDepth.c \ + S1ap-E-UTRAN-Trace-ID.c \ + S1ap-TrafficLoadReductionIndication.c \ + S1ap-TypeOfError.c \ + S1ap-UEAggregateMaximumBitrate.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-UEPagingID.c \ + S1ap-UERadioCapability.c \ + S1ap-UESecurityCapabilities.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-Criticality.c \ + S1ap-Presence.c \ + S1ap-PrivateIE-ID.c \ + S1ap-ProcedureCode.c \ + S1ap-ProtocolExtensionID.c \ + S1ap-ProtocolIE-ID.c \ + S1ap-TriggeringMessage.c \ + ProtocolIE-Container.c \ + ProtocolIE-SingleContainer.c \ + ProtocolIE-Field.c \ + ProtocolIE-ContainerPair.c \ + ProtocolIE-FieldPair.c \ + ProtocolIE-ContainerList.c \ + ProtocolIE-ContainerPairList.c \ + ProtocolExtensionContainer.c \ + ProtocolExtensionField.c \ + PrivateIE-Container.c \ + PrivateIE-Field.c \ + S1ap-IE.c + +ASN_MODULE_SOURCES= \ + S1AP-PDU.h \ + S1ap-InitiatingMessage.h \ + S1ap-SuccessfulOutcome.h \ + S1ap-UnsuccessfulOutcome.h \ + E-RAB-S1ap-IE-ContainerList.h \ + E-RAB-S1ap-IE-ContainerPairList.h \ + ProtocolError-S1ap-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-DownlinkNASTransport.h \ + S1ap-InitialUEMessage.h \ + S1ap-UplinkNASTransport.h \ + S1ap-NASNonDeliveryIndication.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-DownlinkS1cdma2000tunneling.h \ + S1ap-UplinkS1cdma2000tunneling.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-DownlinkUEAssociatedLPPaTransport.h \ + S1ap-UplinkUEAssociatedLPPaTransport.h \ + S1ap-DownlinkNonUEAssociatedLPPaTransport.h \ + S1ap-UplinkNonUEAssociatedLPPaTransport.h \ + S1ap-AreaScopeOfMDT.h \ + S1ap-AllocationAndRetentionPriority.h \ + S1ap-Bearers-SubjectToStatusTransferList.h \ + S1ap-Bearers-SubjectToStatusTransfer-Item.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-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-CSG-Id.h \ + S1ap-CSG-IdList.h \ + S1ap-CSG-IdList-Item.h \ + S1ap-CSGMembershipStatus.h \ + S1ap-COUNTvalue.h \ + S1ap-CriticalityDiagnostics.h \ + S1ap-CriticalityDiagnostics-IE-List.h \ + S1ap-CriticalityDiagnostics-S1ap-IE-Item.h \ + S1ap-DataCodingScheme.h \ + S1ap-DL-Forwarding.h \ + S1ap-Direct-Forwarding-Path-Availability.h \ + S1ap-Data-Forwarding-Not-Possible.h \ + S1ap-ECGIList.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-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-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-ExtendedRNC-ID.h \ + S1ap-ExtendedRepetitionPeriod.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-GWContextReleaseIndication.h \ + S1ap-HandoverRestrictionList.h \ + S1ap-HandoverType.h \ + S1ap-HFN.h \ + S1ap-ImmediateMDT.h \ + S1ap-IMSI.h \ + S1ap-IntegrityProtectionAlgorithms.h \ + S1ap-InterfacesToTrace.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-LoggedMDT.h \ + S1ap-LoggingInterval.h \ + S1ap-LoggingDuration.h \ + S1ap-MDT-Activation.h \ + S1ap-MDT-Configuration.h \ + S1ap-ManagementBasedMDTAllowed.h \ + S1ap-PrivacyIndicator.h \ + S1ap-MDTMode.h \ + S1ap-MeasurementsToActivate.h \ + S1ap-MeasurementThresholdA2.h \ + S1ap-MessageIdentifier.h \ + S1ap-MMEname.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-NAS-PDU.h \ + S1ap-NASSecurityParametersfromE-UTRAN.h \ + S1ap-NASSecurityParameterstoE-UTRAN.h \ + S1ap-NumberofBroadcastRequest.h \ + S1ap-NumberOfBroadcasts.h \ + S1ap-OldBSS-ToNewBSS-Information.h \ + S1ap-OverloadAction.h \ + S1ap-OverloadResponse.h \ + S1ap-PagingDRX.h \ + S1ap-PagingPriority.h \ + S1ap-PDCP-SN.h \ + S1ap-PeriodicReportingMDT.h \ + S1ap-PLMNidentity.h \ + S1ap-Pre-emptionCapability.h \ + S1ap-Pre-emptionVulnerability.h \ + S1ap-PriorityLevel.h \ + S1ap-PS-ServiceNotAvailable.h \ + S1ap-QCI.h \ + S1ap-ReceiveStatusofULPDCPSDUs.h \ + S1ap-RelativeMMECapacity.h \ + S1ap-RelayNode-Indicator.h \ + S1ap-RAC.h \ + S1ap-ReportAmountMDT.h \ + S1ap-ReportIntervalMDT.h \ + S1ap-ReportingTriggerMDT.h \ + S1ap-RequestType.h \ + S1ap-RIMTransfer.h \ + S1ap-RIMInformation.h \ + S1ap-RIMRoutingAddress.h \ + S1ap-ReportArea.h \ + S1ap-RepetitionPeriod.h \ + S1ap-RNC-ID.h \ + S1ap-RRC-Container.h \ + S1ap-RRC-Establishment-Cause.h \ + S1ap-Routing-ID.h \ + S1ap-SecurityKey.h \ + S1ap-SecurityContext.h \ + S1ap-SerialNumber.h \ + S1ap-SONInformation.h \ + S1ap-SONInformationRequest.h \ + S1ap-SONInformationReply.h \ + S1ap-SONConfigurationTransfer.h \ + S1ap-Source-ToTarget-TransparentContainer.h \ + S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h \ + S1ap-SourceeNB-ID.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-SynchronizationStatus.h \ + S1ap-TimeSynchronizationInfo.h \ + S1ap-S-TMSI.h \ + S1ap-TAC.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-ThresholdEventA2.h \ + S1ap-Threshold-RSRP.h \ + S1ap-Threshold-RSRQ.h \ + S1ap-TimeToWait.h \ + S1ap-Time-UE-StayedInCell.h \ + S1ap-TransportLayerAddress.h \ + S1ap-TraceActivation.h \ + S1ap-TraceDepth.h \ + S1ap-E-UTRAN-Trace-ID.h \ + S1ap-TrafficLoadReductionIndication.h \ + S1ap-TypeOfError.h \ + S1ap-UEAggregateMaximumBitrate.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-UEPagingID.h \ + S1ap-UERadioCapability.h \ + S1ap-UESecurityCapabilities.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-Criticality.h \ + S1ap-Presence.h \ + S1ap-PrivateIE-ID.h \ + S1ap-ProcedureCode.h \ + S1ap-ProtocolExtensionID.h \ + S1ap-ProtocolIE-ID.h \ + S1ap-TriggeringMessage.h \ + ProtocolIE-Container.h \ + ProtocolIE-SingleContainer.h \ + ProtocolIE-Field.h \ + ProtocolIE-ContainerPair.h \ + ProtocolIE-FieldPair.h \ + ProtocolIE-ContainerList.h \ + ProtocolIE-ContainerPairList.h \ + ProtocolExtensionContainer.h \ + ProtocolExtensionField.h \ + PrivateIE-Container.h \ + PrivateIE-Field.h \ + S1ap-IE.h + +ASN_MODULE_SOURCES+=ANY.h +ASN_MODULE_NODIST_SOURCES+=ANY.c +ASN_MODULE_SOURCES+=BOOLEAN.h +ASN_MODULE_NODIST_SOURCES+=BOOLEAN.c +ASN_MODULE_SOURCES+=INTEGER.h +ASN_MODULE_SOURCES+=NativeEnumerated.h +ASN_MODULE_NODIST_SOURCES+=INTEGER.c +ASN_MODULE_SOURCES+=NULL.h +ASN_MODULE_NODIST_SOURCES+=NULL.c +ASN_MODULE_NODIST_SOURCES+=NativeEnumerated.c +ASN_MODULE_SOURCES+=NativeInteger.h +ASN_MODULE_NODIST_SOURCES+=NativeInteger.c +ASN_MODULE_SOURCES+=OBJECT_IDENTIFIER.h +ASN_MODULE_NODIST_SOURCES+=OBJECT_IDENTIFIER.c +ASN_MODULE_SOURCES+=PrintableString.h +ASN_MODULE_NODIST_SOURCES+=PrintableString.c +ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.h +ASN_MODULE_NODIST_SOURCES+=asn_SEQUENCE_OF.c +ASN_MODULE_SOURCES+=asn_SET_OF.h +ASN_MODULE_NODIST_SOURCES+=asn_SET_OF.c +ASN_MODULE_SOURCES+=constr_CHOICE.h +ASN_MODULE_NODIST_SOURCES+=constr_CHOICE.c +ASN_MODULE_SOURCES+=constr_SEQUENCE.h +ASN_MODULE_NODIST_SOURCES+=constr_SEQUENCE.c +ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.h +ASN_MODULE_NODIST_SOURCES+=constr_SEQUENCE_OF.c +ASN_MODULE_SOURCES+=constr_SET_OF.h +ASN_MODULE_NODIST_SOURCES+=constr_SET_OF.c +ASN_MODULE_SOURCES+=asn_application.h +ASN_MODULE_SOURCES+=asn_system.h +ASN_MODULE_SOURCES+=asn_codecs.h +ASN_MODULE_SOURCES+=asn_internal.h +ASN_MODULE_SOURCES+=OCTET_STRING.h +ASN_MODULE_NODIST_SOURCES+=OCTET_STRING.c +ASN_MODULE_SOURCES+=BIT_STRING.h +ASN_MODULE_NODIST_SOURCES+=BIT_STRING.c +ASN_MODULE_NODIST_SOURCES+=asn_codecs_prim.c +ASN_MODULE_SOURCES+=asn_codecs_prim.h +ASN_MODULE_SOURCES+=ber_tlv_length.h +ASN_MODULE_NODIST_SOURCES+=ber_tlv_length.c +ASN_MODULE_SOURCES+=ber_tlv_tag.h +ASN_MODULE_NODIST_SOURCES+=ber_tlv_tag.c +ASN_MODULE_SOURCES+=ber_decoder.h +ASN_MODULE_NODIST_SOURCES+=ber_decoder.c +ASN_MODULE_SOURCES+=der_encoder.h +ASN_MODULE_NODIST_SOURCES+=der_encoder.c +ASN_MODULE_SOURCES+=constr_TYPE.h +ASN_MODULE_NODIST_SOURCES+=constr_TYPE.c +ASN_MODULE_SOURCES+=constraints.h +ASN_MODULE_NODIST_SOURCES+=constraints.c +ASN_MODULE_SOURCES+=xer_support.h +ASN_MODULE_NODIST_SOURCES+=xer_support.c +ASN_MODULE_SOURCES+=xer_decoder.h +ASN_MODULE_NODIST_SOURCES+=xer_decoder.c +ASN_MODULE_SOURCES+=xer_encoder.h +ASN_MODULE_NODIST_SOURCES+=xer_encoder.c +ASN_MODULE_SOURCES+=per_support.h +ASN_MODULE_NODIST_SOURCES+=per_support.c +ASN_MODULE_SOURCES+=per_decoder.h +ASN_MODULE_NODIST_SOURCES+=per_decoder.c +ASN_MODULE_SOURCES+=per_encoder.h +ASN_MODULE_NODIST_SOURCES+=per_encoder.c +ASN_MODULE_SOURCES+=per_opentype.h +ASN_MODULE_NODIST_SOURCES+=per_opentype.c + + +lib_LTLIBRARIES=libasn1c.la +libasn1c_la_SOURCES=$(ASN_MODULE_SOURCES) +nodist_libasn1c_la_SOURCES=$(ASN_MODULE_NODIST_SOURCES) + +AM_CFLAGS = \ + -Wall -Werror -Wno-parentheses-equality + +MAINTAINERCLEANFILES = Makefile.in +MOSTLYCLEANFILES = core *.stackdump + +EXTRA_DIST = .libs $(noinst_LTLIBRARIES) + +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + ../../../../AuthenticEshkinKot/asn1c/asn1c/asn1c -fcompound-names -gen-PER ../support/S1AP-PDU.asn + diff --git a/lib/asn/asn1c/NULL.c b/lib/asn/asn1c/NULL.c new file mode 100644 index 0000000000..51af26257f --- /dev/null +++ b/lib/asn/asn1c/NULL.c @@ -0,0 +1,195 @@ +/*- + * 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_descriptor_t asn_DEF_NULL = { + "NULL", + "NULL", + BOOLEAN_free, + NULL_print, + asn_generic_no_constraint, + BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */ + NULL_encode_der, /* Special handling of DER encoding */ + NULL_decode_xer, + NULL_encode_xer, + NULL_decode_uper, /* Unaligned PER decoder */ + NULL_encode_uper, /* Unaligned PER encoder */ + NULL_decode_aper, /* Aligned PER decoder */ + NULL_encode_aper, /* Aligned PER encoder */ + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NULL_encode_der(asn_TYPE_descriptor_t *td, 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(asn_TYPE_descriptor_t *td, 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(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(asn_codec_ctx_t *opt_codec_ctx, + 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_print(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; + } +} + +asn_dec_rval_t +NULL_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + 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_dec_rval_t +NULL_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + 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(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, + 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_enc_rval_t +NULL_encode_aper(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, + 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); +} diff --git a/lib/asn/asn1c/NULL.h b/lib/asn/asn1c/NULL.h new file mode 100644 index 0000000000..90784d811b --- /dev/null +++ b/lib/asn/asn1c/NULL.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2003 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 + +#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; + +asn_struct_print_f NULL_print; +der_type_encoder_f NULL_encode_der; +xer_type_decoder_f NULL_decode_xer; +xer_type_encoder_f NULL_encode_xer; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_H */ diff --git a/lib/asn/asn1c/NativeEnumerated.c b/lib/asn/asn1c/NativeEnumerated.c new file mode 100644 index 0000000000..9e3f3b9732 --- /dev/null +++ b/lib/asn/asn1c/NativeEnumerated.c @@ -0,0 +1,332 @@ +/*- + * 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_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + NativeInteger_free, + NativeInteger_print, + asn_generic_no_constraint, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NativeEnumerated_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_INTEGER_specifics_t *specs=(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) { + size_t srcsize = el->enum_len + 5; + char *src = (char *)alloca(srcsize); + + er.encoded = snprintf(src, srcsize, "<%s/>", el->enum_name); + assert(er.encoded > 0 && (size_t)er.encoded < srcsize); + if(cb(src, er.encoded, app_key) < 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(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + asn_INTEGER_specifics_t *specs = (asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->per_constraints) ct = &td->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; +} + +asn_dec_rval_t +NativeEnumerated_decode_aper(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + asn_INTEGER_specifics_t *specs = (asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->per_constraints) ct = &td->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(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_INTEGER_specifics_t *specs = (asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + long native, value; + 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->per_constraints) ct = &td->per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(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); +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_INTEGER_specifics_t *specs = (asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + long native, value; + 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->per_constraints) ct = &td->per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(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/asn/asn1c/NativeEnumerated.h b/lib/asn/asn1c/NativeEnumerated.h new file mode 100644 index 0000000000..95f0531287 --- /dev/null +++ b/lib/asn/asn1c/NativeEnumerated.h @@ -0,0 +1,34 @@ +/*- + * Copyright (c) 2004, 2005, 2006 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; + +xer_type_encoder_f NativeEnumerated_encode_xer; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/lib/asn/asn1c/NativeInteger.c b/lib/asn/asn1c/NativeInteger.c new file mode 100644 index 0000000000..ea7c21bdb4 --- /dev/null +++ b/lib/asn/asn1c/NativeInteger.c @@ -0,0 +1,396 @@ +/*- + * 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_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + NativeInteger_free, + NativeInteger_print, + asn_generic_no_constraint, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeInteger_encode_xer, + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, + void **nint_ptr, const void *buf_ptr, size_t size, int tag_mode) { + asn_INTEGER_specifics_t *specs=(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 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 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(asn_TYPE_descriptor_t *sd, void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(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.encoded == -1) { + assert(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(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname, + const void *buf_ptr, size_t size) { + asn_INTEGER_specifics_t *specs=(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 long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long 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(asn_TYPE_descriptor_t *td, void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_INTEGER_specifics_t *specs=(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); +} + +asn_dec_rval_t +NativeInteger_decode_uper(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long long *native = (long long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long 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 long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %lld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_dec_rval_t +NativeInteger_decode_aper(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long long *native = (long long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long 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 long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %lld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(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_enc_rval_t +NativeInteger_encode_aper( + asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + + asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(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, 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; +} + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_INTEGER_specifics_t *specs=(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) { + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + return (cb(scratch, ret, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +NativeInteger_free(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) { + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, contents_only, ptr); + + if(!contents_only) { + FREEMEM(ptr); + } +} + diff --git a/lib/asn/asn1c/NativeInteger.h b/lib/asn/asn1c/NativeInteger.h new file mode 100644 index 0000000000..14aa1a49b7 --- /dev/null +++ b/lib/asn/asn1c/NativeInteger.h @@ -0,0 +1,39 @@ +/*- + * Copyright (c) 2004 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; + +asn_struct_free_f NativeInteger_free; +asn_struct_print_f NativeInteger_print; +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; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/lib/asn/asn1c/OBJECT_IDENTIFIER.c b/lib/asn/asn1c/OBJECT_IDENTIFIER.c new file mode 100644 index 0000000000..e109cf5c40 --- /dev/null +++ b/lib/asn/asn1c/OBJECT_IDENTIFIER.c @@ -0,0 +1,766 @@ +/*- + * 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_descriptor_t asn_DEF_OBJECT_IDENTIFIER = { + "OBJECT IDENTIFIER", + "OBJECT_IDENTIFIER", + ASN__PRIMITIVE_TYPE_free, + OBJECT_IDENTIFIER_print, + OBJECT_IDENTIFIER_constraint, + ber_decode_primitive, + der_encode_primitive, + OBJECT_IDENTIFIER_decode_xer, + OBJECT_IDENTIFIER_encode_xer, + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + + +int +OBJECT_IDENTIFIER_constraint(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; +} + + +int +OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, unsigned int arclen, signed int add, void *rvbufp, unsigned int rvsize) { + unsigned LE GCC_NOTUSED = 1; /* Little endian (x86) */ + const uint8_t *arcend = arcbuf + arclen; /* End of arc */ + unsigned int cache = 0; /* No more than 14 significant bits */ + unsigned char *rvbuf = (unsigned char *)rvbufp; + unsigned char *rvstart = rvbuf; /* Original start of the value buffer */ + int inc; /* Return value growth direction */ + + rvsize *= CHAR_BIT; /* bytes to bits */ + arclen *= 7; /* bytes to bits */ + + /* + * The arc has the number of bits + * cannot be represented using supplied return value type. + */ + if(arclen > rvsize) { + if(arclen > (rvsize + CHAR_BIT)) { + errno = ERANGE; /* Overflow */ + return -1; + } else { + /* + * Even if the number of bits in the arc representation + * is higher than the width of supplied * return value + * type, there is still possible to fit it when there + * are few unused high bits in the arc value + * representaion. + * + * Moreover, there is a possibility that the + * number could actually fit the arc space, given + * that add is negative, but we don't handle + * such "temporary lack of precision" situation here. + * May be considered as a bug. + */ + uint8_t mask = (0xff << (7-(arclen - rvsize))) & 0x7f; + if((*arcbuf & mask)) { + errno = ERANGE; /* Overflow */ + return -1; + } + /* Fool the routine computing unused bits */ + arclen -= 7; + cache = *arcbuf & 0x7f; + arcbuf++; + } + } + + /* Faster path for common size */ + if(rvsize == (CHAR_BIT * sizeof(unsigned long))) { + unsigned long accum; + /* Gather all bits into the accumulator */ + for(accum = cache; arcbuf < arcend; arcbuf++) + accum = (accum << 7) | (*arcbuf & ~0x80); + if(accum < (unsigned)-add) { + errno = ERANGE; /* Overflow */ + return -1; + } + *(unsigned long *)(void *)rvbuf = accum + add; /* alignment OK! */ + return 0; + } + +#ifndef WORDS_BIGENDIAN + if(*(unsigned char *)&LE) { /* Little endian (x86) */ + /* "Convert" to big endian */ + rvbuf += rvsize / CHAR_BIT - 1; + rvstart--; + inc = -1; /* Descending */ + } else +#endif /* !WORDS_BIGENDIAN */ + inc = +1; /* Big endian is known [at compile time] */ + + { + int bits; /* typically no more than 3-4 bits */ + + /* Clear the high unused bits */ + for(bits = rvsize - arclen; + bits > CHAR_BIT; + rvbuf += inc, bits -= CHAR_BIT) + *rvbuf = 0; + + /* Fill the body of a value */ + for(; arcbuf < arcend; arcbuf++) { + cache = (cache << 7) | (*arcbuf & 0x7f); + bits += 7; + if(bits >= CHAR_BIT) { + bits -= CHAR_BIT; + *rvbuf = (cache >> bits); + rvbuf += inc; + } + } + if(bits) { + *rvbuf = cache; + rvbuf += inc; + } + } + + if(add) { + for(rvbuf -= inc; rvbuf != rvstart; rvbuf -= inc) { + int v = add + *rvbuf; + if(v & ((unsigned)~0 << CHAR_BIT)) { + *rvbuf = (unsigned char)(v + (1 << CHAR_BIT)); + add = -1; + } else { + *rvbuf = v; + break; + } + } + if(rvbuf == rvstart) { + /* No space to carry over */ + errno = ERANGE; /* Overflow */ + return -1; + } + } + + return 0; +} + +ssize_t +OBJECT_IDENTIFIER__dump_arc(const uint8_t *arcbuf, int arclen, int add, + asn_app_consume_bytes_f *cb, void *app_key) { + char scratch[64]; /* Conservative estimate */ + unsigned long accum; /* Bits accumulator */ + char *p; /* Position in the scratch buffer */ + + if(OBJECT_IDENTIFIER_get_single_arc(arcbuf, arclen, add, + &accum, sizeof(accum))) + return -1; + + if(accum) { + ssize_t len; + + /* Fill the scratch buffer in reverse. */ + p = scratch + sizeof(scratch); + for(; accum; accum /= 10) + *(--p) = (char)(accum % 10) + 0x30; /* Put a digit */ + + len = sizeof(scratch) - (p - scratch); + if(cb(p, len, app_key) < 0) + return -1; + return len; + } else { + *scratch = 0x30; + if(cb(scratch, 1, app_key) < 0) + return -1; + return 1; + } +} + +int +OBJECT_IDENTIFIER_print_arc(const uint8_t *arcbuf, int arclen, int add, + asn_app_consume_bytes_f *cb, void *app_key) { + + if(OBJECT_IDENTIFIER__dump_arc(arcbuf, arclen, add, cb, app_key) < 0) + return -1; + + return 0; +} + +static ssize_t +OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, asn_app_consume_bytes_f *cb, void *app_key) { + ssize_t wrote_len = 0; + int startn; + int add = 0; + int i; + + for(i = 0, startn = 0; i < st->size; i++) { + uint8_t b = st->buf[i]; + if((b & 0x80)) /* Continuation expected */ + continue; + + if(startn == 0) { + /* + * First two arcs are encoded through the backdoor. + */ + if(i) { + add = -80; + if(cb("2", 1, app_key) < 0) return -1; + } else if(b <= 39) { + add = 0; + if(cb("0", 1, app_key) < 0) return -1; + } else if(b < 79) { + add = -40; + if(cb("1", 1, app_key) < 0) return -1; + } else { + add = -80; + if(cb("2", 1, app_key) < 0) return -1; + } + wrote_len += 1; + } + + if(cb(".", 1, app_key) < 0) /* Separate arcs */ + return -1; + + add = OBJECT_IDENTIFIER__dump_arc(&st->buf[startn], + i - startn + 1, add, cb, app_key); + if(add < 0) return -1; + wrote_len += 1 + add; + startn = i + 1; + add = 0; + } + + return wrote_len; +} + +static enum xer_pbd_rval +OBJECT_IDENTIFIER__xer_body_decode(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; + long s_arcs[10]; + long *arcs = s_arcs; + int arcs_count; + int ret; + + (void)td; + + arcs_count = OBJECT_IDENTIFIER_parse_arcs( + (const char *)chunk_buf, chunk_size, arcs, + sizeof(s_arcs)/sizeof(s_arcs[0]), &endptr); + if(arcs_count < 0) { + /* Expecting more than zero arcs */ + return XPBD_BROKEN_ENCODING; + } else if(arcs_count == 0) { + return XPBD_NOT_BODY_IGNORE; + } + assert(endptr == chunk_end); + + if((size_t)arcs_count > sizeof(s_arcs)/sizeof(s_arcs[0])) { + arcs = (long *)MALLOC(arcs_count * sizeof(long)); + if(!arcs) return XPBD_SYSTEM_FAILURE; + ret = OBJECT_IDENTIFIER_parse_arcs( + (const char *)chunk_buf, chunk_size, + arcs, arcs_count, &endptr); + if(ret != arcs_count) + return XPBD_SYSTEM_FAILURE; /* assert?.. */ + } + + /* + * Convert arcs into BER representation. + */ + ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, sizeof(*arcs), arcs_count); + if(arcs != s_arcs) FREEMEM(arcs); + + return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +OBJECT_IDENTIFIER_decode_xer(asn_codec_ctx_t *opt_codec_ctx, + 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(asn_TYPE_descriptor_t *td, 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(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; +} + +int +OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid, void *arcs, + unsigned int arc_type_size, unsigned int arc_slots) { + void *arcs_end = (char *)arcs + (arc_type_size * arc_slots); + int num_arcs = 0; + int startn = 0; + int add = 0; + int i; + + if(!oid || !oid->buf || (arc_slots && arc_type_size <= 1)) { + errno = EINVAL; + return -1; + } + + for(i = 0; i < oid->size; i++) { + uint8_t b = oid->buf[i]; + if((b & 0x80)) /* Continuation expected */ + continue; + + if(num_arcs == 0) { + /* + * First two arcs are encoded through the backdoor. + */ + unsigned LE = 1; /* Little endian */ + int first_arc; + num_arcs++; + if(!arc_slots) { num_arcs++; continue; } + + if(i) first_arc = 2; + else if(b <= 39) first_arc = 0; + else if(b < 79) first_arc = 1; + else first_arc = 2; + + add = -40 * first_arc; + memset(arcs, 0, arc_type_size); + *(unsigned char *)((char *)arcs + + ((*(char *)&LE)?0:(arc_type_size - 1))) + = first_arc; + arcs = ((char *)arcs) + arc_type_size; + } + + /* Decode, if has space */ + if(arcs < arcs_end) { + if(OBJECT_IDENTIFIER_get_single_arc(&oid->buf[startn], + i - startn + 1, add, + arcs, arc_type_size)) + return -1; + startn = i + 1; + arcs = ((char *)arcs) + arc_type_size; + add = 0; + } + num_arcs++; + } + + return num_arcs; +} + + +/* + * Save the single value as an object identifier arc. + */ +int +OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, const void *arcval, unsigned int arcval_size, int prepared_order) { + /* + * The following conditions must hold: + * assert(arcval); + * assert(arcval_size > 0); + * assert(arcval_size <= 16); + * assert(arcbuf); + */ +#ifdef WORDS_BIGENDIAN + const unsigned isLittleEndian = 0; +#else + unsigned LE = 1; + unsigned isLittleEndian = *(char *)&LE; +#endif + const uint8_t *tend, *tp; + unsigned int cache; + uint8_t *bp = arcbuf; + int bits; + uint8_t buffer[16]; + + if(isLittleEndian && !prepared_order) { + const uint8_t *a = (const unsigned char *)arcval + arcval_size - 1; + const uint8_t *aend = (const uint8_t *)arcval; + uint8_t *msb = buffer + arcval_size - 1; + uint8_t *tb; + for(tb = buffer; a >= aend; tb++, a--) + if((*tb = *a) && (tb < msb)) + msb = tb; + tend = &buffer[arcval_size]; + tp = msb; /* Most significant non-zero byte */ + } else { + /* Look for most significant non-zero byte */ + tend = (const unsigned char *)arcval + arcval_size; + for(tp = (const uint8_t *)arcval; tp < tend - 1; tp++) + if(*tp) break; + } + + /* + * Split the value in 7-bits chunks. + */ + bits = ((tend - tp) * CHAR_BIT) % 7; + if(bits) { + cache = *tp >> (CHAR_BIT - bits); + if(cache) { + *bp++ = cache | 0x80; + cache = *tp++; + bits = CHAR_BIT - bits; + } else { + bits = -bits; + } + } else { + cache = 0; + } + for(; tp < tend; tp++) { + cache = (cache << CHAR_BIT) + *tp; + bits += CHAR_BIT; + while(bits >= 7) { + bits -= 7; + *bp++ = 0x80 | (cache >> bits); + } + } + if(bits) *bp++ = cache; + bp[-1] &= 0x7f; /* Clear the last bit */ + + return bp - arcbuf; +} + +int +OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, const void *arcs, unsigned int arc_type_size, unsigned int arc_slots) { + uint8_t *buf; + uint8_t *bp; + unsigned LE = 1; /* Little endian (x86) */ + unsigned isLittleEndian = *((char *)&LE); + unsigned int arc0; + unsigned int arc1; + unsigned size; + unsigned i; + + if(!oid || !arcs || arc_type_size < 1 + || arc_type_size > 16 + || arc_slots < 2) { + errno = EINVAL; + return -1; + } + + switch(arc_type_size) { + case sizeof(char): + arc0 = ((const unsigned char *)arcs)[0]; + arc1 = ((const unsigned char *)arcs)[1]; + break; + case sizeof(short): + arc0 = ((const unsigned short *)arcs)[0]; + arc1 = ((const unsigned short *)arcs)[1]; + break; + case sizeof(int): + arc0 = ((const unsigned int *)arcs)[0]; + arc1 = ((const unsigned int *)arcs)[1]; + break; + default: + arc1 = arc0 = 0; + if(isLittleEndian) { /* Little endian (x86) */ + const unsigned char *ps, *pe; + /* If more significant bytes are present, + * make them > 255 quick */ + for(ps = (const unsigned char *)arcs + 1, pe = ps+arc_type_size; + ps < pe; ps++) + arc0 |= *ps, arc1 |= *(ps + arc_type_size); + arc0 <<= CHAR_BIT, arc1 <<= CHAR_BIT; + arc0 = *((const unsigned char *)arcs + 0); + arc1 = *((const unsigned char *)arcs + arc_type_size); + } else { + const unsigned char *ps, *pe; + /* If more significant bytes are present, + * make them > 255 quick */ + for(ps = (const unsigned char *)arcs, pe = ps+arc_type_size - 1; ps < pe; ps++) + arc0 |= *ps, arc1 |= *(ps + arc_type_size); + arc0 = *((const unsigned char *)arcs + arc_type_size - 1); + arc1 = *((const unsigned char *)arcs +(arc_type_size<< 1)-1); + } + } + + /* + * The previous chapter left us with the first and the second arcs. + * The values are not precise (that is, they are valid only if + * they're less than 255), but OK for the purposes of making + * the sanity test below. + */ + if(arc0 <= 1) { + if(arc1 >= 39) { + /* 8.19.4: At most 39 subsequent values (including 0) */ + 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 = ((arc_type_size * CHAR_BIT + 6) / 7) * arc_slots; + bp = buf = (uint8_t *)MALLOC(size + 1); + if(!buf) { + /* ENOMEM */ + return -1; + } + + /* + * Encode the first two arcs. + * These require special treatment. + */ + { + uint8_t *tp; + uint8_t first_value[1 + 16]; /* of two arcs */ + uint8_t *fv = first_value; + + /* + * Simulate first_value = arc0 * 40 + arc1; + */ + /* Copy the second (1'st) arcs[1] into the first_value */ + *fv++ = 0; + arcs = ((const char *)arcs) + arc_type_size; + if(isLittleEndian) { + const uint8_t *aend = (const unsigned char *)arcs - 1; + const uint8_t *a1 = (const unsigned char *)arcs + arc_type_size - 1; + for(; a1 > aend; fv++, a1--) *fv = *a1; + } else { + const uint8_t *a1 = (const uint8_t *)arcs; + const uint8_t *aend = a1 + arc_type_size; + for(; a1 < aend; fv++, a1++) *fv = *a1; + } + /* Increase the first_value by arc0 */ + arc0 *= 40; /* (0..80) */ + for(tp = first_value + arc_type_size; tp >= first_value; tp--) { + unsigned int v = *tp; + v += arc0; + *tp = v; + if(v >= (1 << CHAR_BIT)) arc0 = v >> CHAR_BIT; + else break; + } + + assert(tp >= first_value); + + bp += OBJECT_IDENTIFIER_set_single_arc(bp, first_value, + fv - first_value, 1); + } + + /* + * Save the rest of arcs. + */ + for(arcs = ((const char *)arcs) + arc_type_size, i = 2; + i < arc_slots; + i++, arcs = ((const char *)arcs) + arc_type_size) { + bp += OBJECT_IDENTIFIER_set_single_arc(bp, + arcs, arc_type_size, 0); + } + + assert((unsigned)(bp - buf) <= size); + + /* + * Replace buffer. + */ + oid->size = bp - buf; + bp = oid->buf; + oid->buf = buf; + if(bp) FREEMEM(bp); + + return 0; +} + + +int +OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length, + long *arcs, unsigned int arcs_slots, const char **opt_oid_text_end) { + unsigned int arcs_count = 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_slots && !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; \ + long long value; \ + switch(asn_strtol_lim(oid_text, &endp, &value)) { \ + case ASN_STRTOL_EXTRA_DATA: \ + case ASN_STRTOL_OK: \ + if(arcs_count < arcs_slots) \ + arcs[arcs_count] = value; \ + arcs_count++; \ + oid_text = endp - 1; \ + break; \ + case ASN_STRTOL_ERROR_RANGE: \ + if(opt_oid_text_end) \ + *opt_oid_text_end = oid_text; \ + errno = ERANGE; \ + return -1; \ + case ASN_STRTOL_ERROR_INVAL: \ + case ASN_STRTOL_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 arcs_count; + } + + errno = EINVAL; /* Broken OID */ + return -1; +} + + diff --git a/lib/asn/asn1c/OBJECT_IDENTIFIER.h b/lib/asn/asn1c/OBJECT_IDENTIFIER.h new file mode 100644 index 0000000000..c2c6373e3b --- /dev/null +++ b/lib/asn/asn1c/OBJECT_IDENTIFIER.h @@ -0,0 +1,139 @@ +/*- + * Copyright (c) 2003, 2004, 2005 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OBJECT_IDENTIFIER_H_ +#define _OBJECT_IDENTIFIER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t; + +extern asn_TYPE_descriptor_t asn_DEF_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; + +/********************************** + * 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) { + * unsigned long fixed_arcs[10]; // Try with fixed space first + * unsigned long *arcs = fixed_arcs; + * int arc_type_size = sizeof(fixed_arcs[0]); // sizeof(long) + * int arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10 + * int count; // Real number of arcs. + * int i; + * + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, + * arc_type_size, arc_slots); + * // If necessary, reallocate arcs array and try again. + * if(count > arc_slots) { + * arc_slots = count; + * arcs = malloc(arc_type_size * arc_slots); + * if(!arcs) return; + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, + * arc_type_size, arc_slots); + * assert(count == arc_slots); + * } + * + * // Print the contents of the arcs array. + * for(i = 0; i < count; i++) + * printf("%d\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 real number of arcs, + * even if there is no sufficient (_arc_slots) provided. + */ +int OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *_oid, + void *_arcs, /* e.g., unsigned int arcs[N] */ + unsigned int _arc_type_size, /* e.g., sizeof(arcs[0]) */ + unsigned int _arc_slots /* e.g., N */); + +/* + * 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 void *_arcs, /* e.g., unsigned int arcs[N] */ + unsigned int _arc_type_size, /* e.g., sizeof(arcs[0]) */ + unsigned int _arc_slots /* e.g., N */); + +/* + * Print the specified OBJECT IDENTIFIER arc. + */ +int OBJECT_IDENTIFIER_print_arc(const uint8_t *arcbuf, int arclen, + int add, /* Arbitrary offset, required to process the first two arcs */ + asn_app_consume_bytes_f *cb, void *app_key); + +/* Same as above, but returns the number of written digits, instead of 0 */ +ssize_t OBJECT_IDENTIFIER__dump_arc(const uint8_t *arcbuf, int arclen, int add, + asn_app_consume_bytes_f *cb, void *app_key); + +/* + * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363"). + * No arc can exceed the (0..signed_long_max) range (typically, 0..2G if L32). + * 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. + */ +int OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length, + long arcs[], unsigned int arcs_slots, const char **opt_oid_text_end); + +/* + * Internal functions. + * Used by RELATIVE-OID implementation in particular. + */ +int OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, unsigned int arclen, + signed int add, void *value, unsigned int value_size); +int OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, + const void *arcval, unsigned int arcval_size, int _prepared_order); + +#ifdef __cplusplus +} +#endif + +#endif /* _OBJECT_IDENTIFIER_H_ */ diff --git a/lib/asn/asn1c/OCTET_STRING.c b/lib/asn/asn1c/OCTET_STRING.c new file mode 100644 index 0000000000..506f6eaa18 --- /dev/null +++ b/lib/asn/asn1c/OCTET_STRING.c @@ -0,0 +1,2164 @@ +/*- + * Copyright (c) 2003, 2004, 2005, 2006 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)) +}; +static const asn_OCTET_STRING_specifics_t asn_DEF_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; +static const 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_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + OCTET_STRING_free, + OCTET_STRING_print, /* non-ascii stuff, generally */ + asn_generic_no_constraint, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, + 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 */ + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + &asn_DEF_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 */ + int 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() { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, + void **sptr, const void *buf_ptr, size_t size, int tag_mode) { + asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_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) { + stck = (struct _stack *)ctx->ptr; + } else { + 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) */ + ssize_t Left = ((!sel||(size_t)sel->left >= size) + ?(ssize_t)size:sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", 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) { + int 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=%d", + (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", + 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 && st->size) { + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + 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(asn_TYPE_descriptor_t *td, void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er; + asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_OCTET_STRING_specs; + BIT_STRING_t *st = (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); + er.encoded++; + } + + /* 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); + } + + er.encoded += st->size; + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_enc_rval_t +OCTET_STRING_encode_xer(asn_TYPE_descriptor_t *td, 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); + er.encoded += p - scratch; + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + er.encoded += p - scratch; + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + er.encoded += (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 */ + er.encoded += p - scratch; + 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(asn_TYPE_descriptor_t *td, 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 */ + ssize_t _ns = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, _ns + 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 <= _ns); + 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 */ + ssize_t _ns = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, _ns + 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 <= _ns); + 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) { + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + /* Strange huge value */ + if((val * base + base) < 0) + return -1; + + 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 */ + } + } + + *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 */ + ssize_t _ns = st->size + chunk_size; + void *nptr = REALLOC(st->buf, _ns + 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 <= _ns); + 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(asn_codec_ctx_t *opt_codec_ctx, + 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; + asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_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(asn_codec_ctx_t *opt_codec_ctx, + 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(asn_codec_ctx_t *opt_codec_ctx, + 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(asn_codec_ctx_t *opt_codec_ctx, + 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); +} + +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 long lb, long long ub, asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%lld..%lld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long long)ub <= ((unsigned long 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 (%lld..%lld)", + 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) { + int code = per_get_few_bits(po, unit_bits); + int ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%lld..%lld)", + 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 long lb, long long ub, asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%lld..%lld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long long)ub <= ((unsigned long 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 (%lld..%lld)", + *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 (%lld..%lld)", + *buf, *buf, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) + return -1; + } + + return 0; +} + +asn_dec_rval_t +OCTET_STRING_decode_uper(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_OCTET_STRING_specs; + asn_per_constraints_t *pc = constraints ? constraints + : td->per_constraints; + asn_per_constraint_t *cval; + 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_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 %lld .. %lld 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(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %lld", + 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 %lld", + 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 */ + raw_len = uper_get_length(pd, csiz->effective_bits, &repeat); + 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(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_dec_rval_t +OCTET_STRING_decode_aper(asn_codec_ctx_t *opt_codec_ctx, + asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_OCTET_STRING_specs; + asn_per_constraints_t *pc = constraints ? constraints + : td->per_constraints; + asn_per_constraint_t *cval; + 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 %lld .. %lld 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 %lld", + 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 %lld", + 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_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + + asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_OCTET_STRING_specs; + asn_per_constraints_t *pc = constraints ? constraints + : td->per_constraints; + asn_per_constraint_t *cval; + 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, %d bits unused", + sizeinunits, st->bits_unused); + 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; + 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" + " (%lld..%lld, effective %d)%s", + td->name, sizeinunits, 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((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 %d bytes (%lld), length in %d bits", + st->size, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + ret = per_put_few_bits(po, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + if(ret) 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 %d bytes", st->size); + + if(sizeinunits == 0) { + if(uper_put_length(po, 0)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + ssize_t maySave = uper_put_length(po, 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); +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + + asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_OCTET_STRING_specs; + asn_per_constraints_t *pc = constraints ? constraints + : td->per_constraints; + asn_per_constraint_t *cval; + 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" + " (%lld..%lld, 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 %d bytes (%lld), length in %d bits", + st->size, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + ret = per_put_few_bits(po, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + 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 %d 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); +} + +int +OCTET_STRING_print(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(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(asn_TYPE_descriptor_t *td, void *sptr, int contents_only) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + struct _stack *stck; + + if(!td || !st) + return; + + specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_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); + } + + if(!contents_only) { + FREEMEM(st); + } +} + +/* + * 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(asn_TYPE_descriptor_t *td, const char *str, int len) { + asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_DEF_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; +} + diff --git a/lib/asn/asn1c/OCTET_STRING.h b/lib/asn/asn1c/OCTET_STRING.h new file mode 100644 index 0000000000..bc25666844 --- /dev/null +++ b/lib/asn/asn1c/OCTET_STRING.h @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2003 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 */ + int 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; + +asn_struct_free_f OCTET_STRING_free; +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +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; +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; + +/****************************** + * 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(asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef const struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + int struct_size; /* Size of the structure */ + int 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/lib/asn/asn1c/PrintableString.c b/lib/asn/asn1c/PrintableString.c new file mode 100644 index 0000000000..a0b263d58a --- /dev/null +++ b/lib/asn/asn1c/PrintableString.c @@ -0,0 +1,111 @@ +/*- + * 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 const asn_per_constraints_t asn_DEF_PrintableString_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_descriptor_t asn_DEF_PrintableString = { + "PrintableString", + "PrintableString", + OCTET_STRING_free, + OCTET_STRING_print_utf8, /* ASCII subset */ + PrintableString_constraint, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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]), + &asn_DEF_PrintableString_constraints, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + + +int +PrintableString_constraint(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/asn/asn1c/PrintableString.h b/lib/asn/asn1c/PrintableString.h new file mode 100644 index 0000000000..2ece440eee --- /dev/null +++ b/lib/asn/asn1c/PrintableString.h @@ -0,0 +1,24 @@ +/*- + * Copyright (c) 2003 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; + +asn_constr_check_f PrintableString_constraint; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrintableString_H_ */ diff --git a/lib/asn/asn1c/PrivateIE-Container.c b/lib/asn/asn1c/PrivateIE-Container.c new file mode 100644 index 0000000000..49f25dc3e4 --- /dev/null +++ b/lib/asn/asn1c/PrivateIE-Container.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "PrivateIE-Container.h" + +static asn_per_constraints_t asn_PER_type_PrivateIE_Container_5768P0_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_PrivateIE_Container_5768P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PrivateIE_Field_5772P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateIE_Container_5768P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_PrivateIE_Container_5768P0_specs_1 = { + sizeof(struct PrivateIE_Container_5768P0), + offsetof(struct PrivateIE_Container_5768P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateIE_Container_5768P0 = { + "PrivateIE-Container", + "PrivateIE-Container", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_PrivateIE_Container_5768P0_tags_1, + sizeof(asn_DEF_PrivateIE_Container_5768P0_tags_1) + /sizeof(asn_DEF_PrivateIE_Container_5768P0_tags_1[0]), /* 1 */ + asn_DEF_PrivateIE_Container_5768P0_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateIE_Container_5768P0_tags_1) + /sizeof(asn_DEF_PrivateIE_Container_5768P0_tags_1[0]), /* 1 */ + &asn_PER_type_PrivateIE_Container_5768P0_constr_1, + asn_MBR_PrivateIE_Container_5768P0_1, + 1, /* Single element */ + &asn_SPC_PrivateIE_Container_5768P0_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/PrivateIE-Container.h b/lib/asn/asn1c/PrivateIE-Container.h new file mode 100644 index 0000000000..4c09828e63 --- /dev/null +++ b/lib/asn/asn1c/PrivateIE-Container.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _PrivateIE_Container_H_ +#define _PrivateIE_Container_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PrivateIE_Field; + +/* PrivateIE-Container */ +typedef struct PrivateIE_Container_5768P0 { + A_SEQUENCE_OF(struct PrivateIE_Field) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateIE_Container_5768P0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_Container_5768P0; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "PrivateIE-Field.h" + +#endif /* _PrivateIE_Container_H_ */ +#include diff --git a/lib/asn/asn1c/PrivateIE-Field.c b/lib/asn/asn1c/PrivateIE-Field.c new file mode 100644 index 0000000000..683fa13997 --- /dev/null +++ b/lib/asn/asn1c/PrivateIE-Field.c @@ -0,0 +1,154 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "PrivateIE-Field.h" + +static int +memb_id_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_criticality_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 GCC_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_PrivateIE_Field_5772P0_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_Field_5772P0, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1ap_PrivateIE_ID, + memb_id_constraint_1, + &asn_PER_memb_id_constr_2, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_Field_5772P0, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_1, + &asn_PER_memb_criticality_constr_3, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_Field_5772P0, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_value_constraint_1, + &asn_PER_memb_value_constr_4, + 0, + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateIE_Field_5772P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateIE_Field_5772P0_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_PrivateIE_Field_5772P0_specs_1 = { + sizeof(struct PrivateIE_Field_5772P0), + offsetof(struct PrivateIE_Field_5772P0, _asn_ctx), + asn_MAP_PrivateIE_Field_5772P0_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateIE_Field_5772P0 = { + "PrivateIE-Field", + "PrivateIE-Field", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_PrivateIE_Field_5772P0_tags_1, + sizeof(asn_DEF_PrivateIE_Field_5772P0_tags_1) + /sizeof(asn_DEF_PrivateIE_Field_5772P0_tags_1[0]), /* 1 */ + asn_DEF_PrivateIE_Field_5772P0_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateIE_Field_5772P0_tags_1) + /sizeof(asn_DEF_PrivateIE_Field_5772P0_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_PrivateIE_Field_5772P0_1, + 3, /* Elements count */ + &asn_SPC_PrivateIE_Field_5772P0_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/PrivateIE-Field.h b/lib/asn/asn1c/PrivateIE-Field.h new file mode 100644 index 0000000000..340560a979 --- /dev/null +++ b/lib/asn/asn1c/PrivateIE-Field.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _PrivateIE_Field_H_ +#define _PrivateIE_Field_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-PrivateIE-ID.h" +#include "S1ap-Criticality.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PrivateIE-Field */ +typedef struct PrivateIE_Field_5772P0 { + S1ap_PrivateIE_ID_t id; + S1ap_Criticality_t criticality; + ANY_t value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateIE_Field_5772P0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_Field_5772P0; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateIE_Field_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolError-S1ap-IE-ContainerList.c b/lib/asn/asn1c/ProtocolError-S1ap-IE-ContainerList.c new file mode 100644 index 0000000000..23bc7595c8 --- /dev/null +++ b/lib/asn/asn1c/ProtocolError-S1ap-IE-ContainerList.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolError-S1ap-IE-ContainerList.h" + diff --git a/lib/asn/asn1c/ProtocolError-S1ap-IE-ContainerList.h b/lib/asn/asn1c/ProtocolError-S1ap-IE-ContainerList.h new file mode 100644 index 0000000000..8b8d986ff8 --- /dev/null +++ b/lib/asn/asn1c/ProtocolError-S1ap-IE-ContainerList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolError_S1ap_IE_ContainerList_H_ +#define _ProtocolError_S1ap_IE_ContainerList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolError_S1ap_IE_ContainerList_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolExtensionContainer.c b/lib/asn/asn1c/ProtocolExtensionContainer.c new file mode 100644 index 0000000000..3bd81e9215 --- /dev/null +++ b/lib/asn/asn1c/ProtocolExtensionContainer.c @@ -0,0 +1,3885 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolExtensionContainer.h" + +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P0_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P1_constr_3 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P2_constr_5 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P3_constr_7 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P4_constr_9 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P5_constr_11 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P6_constr_13 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P7_constr_15 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P8_constr_17 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P9_constr_19 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P10_constr_21 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P11_constr_23 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P12_constr_25 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P13_constr_27 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P14_constr_29 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P15_constr_31 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P16_constr_33 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P17_constr_35 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P18_constr_37 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P19_constr_39 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P20_constr_41 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P21_constr_43 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P22_constr_45 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P23_constr_47 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P24_constr_49 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P25_constr_51 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P26_constr_53 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P27_constr_55 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P28_constr_57 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P29_constr_59 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P30_constr_61 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P31_constr_63 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P32_constr_65 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P33_constr_67 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P34_constr_69 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P35_constr_71 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P36_constr_73 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P37_constr_75 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P38_constr_77 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P39_constr_79 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P40_constr_81 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P41_constr_83 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P42_constr_85 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P43_constr_87 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P44_constr_89 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P45_constr_91 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P46_constr_93 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P47_constr_95 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P48_constr_97 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P49_constr_99 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P50_constr_101 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P51_constr_103 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P52_constr_105 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P53_constr_107 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P54_constr_109 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P55_constr_111 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P56_constr_113 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P57_constr_115 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P58_constr_117 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P59_constr_119 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P60_constr_121 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P61_constr_123 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P62_constr_125 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P63_constr_127 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P64_constr_129 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P65_constr_131 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P66_constr_133 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P67_constr_135 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P68_constr_137 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P69_constr_139 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P70_constr_141 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P71_constr_143 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P72_constr_145 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P73_constr_147 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P74_constr_149 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_5749P75_constr_151 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P0_specs_1 = { + sizeof(struct ProtocolExtensionContainer_5749P0), + offsetof(struct ProtocolExtensionContainer_5749P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P0 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P0_tags_1, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P0_tags_1) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P0_tags_1) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P0_tags_1[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P0_constr_1, + asn_MBR_ProtocolExtensionContainer_5749P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P0_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P1, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P1_specs_3 = { + sizeof(struct ProtocolExtensionContainer_5749P1), + offsetof(struct ProtocolExtensionContainer_5749P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P1 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P1_tags_3, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P1_tags_3) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P1_tags_3[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P1_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P1_tags_3) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P1_tags_3[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P1_constr_3, + asn_MBR_ProtocolExtensionContainer_5749P1_3, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P1_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P2, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P2_specs_5 = { + sizeof(struct ProtocolExtensionContainer_5749P2), + offsetof(struct ProtocolExtensionContainer_5749P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P2 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P2_tags_5, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P2_tags_5) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P2_tags_5[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P2_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P2_tags_5) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P2_tags_5[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P2_constr_5, + asn_MBR_ProtocolExtensionContainer_5749P2_5, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P2_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P3, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P3_specs_7 = { + sizeof(struct ProtocolExtensionContainer_5749P3), + offsetof(struct ProtocolExtensionContainer_5749P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P3 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P3_tags_7, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P3_tags_7) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P3_tags_7[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P3_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P3_tags_7) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P3_tags_7[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P3_constr_7, + asn_MBR_ProtocolExtensionContainer_5749P3_7, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P3_specs_7 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P4, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P4_specs_9 = { + sizeof(struct ProtocolExtensionContainer_5749P4), + offsetof(struct ProtocolExtensionContainer_5749P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P4 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P4_tags_9, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P4_tags_9) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P4_tags_9[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P4_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P4_tags_9) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P4_tags_9[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P4_constr_9, + asn_MBR_ProtocolExtensionContainer_5749P4_9, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P4_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P5, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P5_specs_11 = { + sizeof(struct ProtocolExtensionContainer_5749P5), + offsetof(struct ProtocolExtensionContainer_5749P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P5 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P5_tags_11, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P5_tags_11) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P5_tags_11[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P5_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P5_tags_11) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P5_tags_11[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P5_constr_11, + asn_MBR_ProtocolExtensionContainer_5749P5_11, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P5_specs_11 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P6, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P6_specs_13 = { + sizeof(struct ProtocolExtensionContainer_5749P6), + offsetof(struct ProtocolExtensionContainer_5749P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P6 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P6_tags_13, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P6_tags_13) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P6_tags_13[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P6_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P6_tags_13) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P6_tags_13[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P6_constr_13, + asn_MBR_ProtocolExtensionContainer_5749P6_13, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P6_specs_13 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P7, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P7_specs_15 = { + sizeof(struct ProtocolExtensionContainer_5749P7), + offsetof(struct ProtocolExtensionContainer_5749P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P7 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P7_tags_15, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P7_tags_15) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P7_tags_15[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P7_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P7_tags_15) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P7_tags_15[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P7_constr_15, + asn_MBR_ProtocolExtensionContainer_5749P7_15, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P7_specs_15 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P8, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P8_specs_17 = { + sizeof(struct ProtocolExtensionContainer_5749P8), + offsetof(struct ProtocolExtensionContainer_5749P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P8 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P8_tags_17, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P8_tags_17) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P8_tags_17[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P8_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P8_tags_17) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P8_tags_17[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P8_constr_17, + asn_MBR_ProtocolExtensionContainer_5749P8_17, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P8_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P9, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P9_specs_19 = { + sizeof(struct ProtocolExtensionContainer_5749P9), + offsetof(struct ProtocolExtensionContainer_5749P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P9 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P9_tags_19, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P9_tags_19) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P9_tags_19[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P9_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P9_tags_19) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P9_tags_19[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P9_constr_19, + asn_MBR_ProtocolExtensionContainer_5749P9_19, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P9_specs_19 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P10, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P10_specs_21 = { + sizeof(struct ProtocolExtensionContainer_5749P10), + offsetof(struct ProtocolExtensionContainer_5749P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P10 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P10_tags_21, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P10_tags_21) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P10_tags_21[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P10_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P10_tags_21) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P10_tags_21[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P10_constr_21, + asn_MBR_ProtocolExtensionContainer_5749P10_21, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P10_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P11, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P11_specs_23 = { + sizeof(struct ProtocolExtensionContainer_5749P11), + offsetof(struct ProtocolExtensionContainer_5749P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P11 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P11_tags_23, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P11_tags_23) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P11_tags_23[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P11_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P11_tags_23) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P11_tags_23[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P11_constr_23, + asn_MBR_ProtocolExtensionContainer_5749P11_23, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P11_specs_23 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P12, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P12_specs_25 = { + sizeof(struct ProtocolExtensionContainer_5749P12), + offsetof(struct ProtocolExtensionContainer_5749P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P12 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P12_tags_25, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P12_tags_25) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P12_tags_25[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P12_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P12_tags_25) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P12_tags_25[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P12_constr_25, + asn_MBR_ProtocolExtensionContainer_5749P12_25, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P12_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P13, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P13_specs_27 = { + sizeof(struct ProtocolExtensionContainer_5749P13), + offsetof(struct ProtocolExtensionContainer_5749P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P13 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P13_tags_27, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P13_tags_27) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P13_tags_27[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P13_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P13_tags_27) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P13_tags_27[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P13_constr_27, + asn_MBR_ProtocolExtensionContainer_5749P13_27, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P13_specs_27 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P14, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P14_specs_29 = { + sizeof(struct ProtocolExtensionContainer_5749P14), + offsetof(struct ProtocolExtensionContainer_5749P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P14 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P14_tags_29, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P14_tags_29) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P14_tags_29[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P14_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P14_tags_29) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P14_tags_29[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P14_constr_29, + asn_MBR_ProtocolExtensionContainer_5749P14_29, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P14_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P15, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P15_specs_31 = { + sizeof(struct ProtocolExtensionContainer_5749P15), + offsetof(struct ProtocolExtensionContainer_5749P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P15 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P15_tags_31, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P15_tags_31) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P15_tags_31[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P15_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P15_tags_31) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P15_tags_31[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P15_constr_31, + asn_MBR_ProtocolExtensionContainer_5749P15_31, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P15_specs_31 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P16, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P16_specs_33 = { + sizeof(struct ProtocolExtensionContainer_5749P16), + offsetof(struct ProtocolExtensionContainer_5749P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P16 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P16_tags_33, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P16_tags_33) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P16_tags_33[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P16_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P16_tags_33) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P16_tags_33[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P16_constr_33, + asn_MBR_ProtocolExtensionContainer_5749P16_33, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P16_specs_33 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P17, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P17_specs_35 = { + sizeof(struct ProtocolExtensionContainer_5749P17), + offsetof(struct ProtocolExtensionContainer_5749P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P17 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P17_tags_35, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P17_tags_35) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P17_tags_35[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P17_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P17_tags_35) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P17_tags_35[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P17_constr_35, + asn_MBR_ProtocolExtensionContainer_5749P17_35, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P17_specs_35 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P18, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P18_specs_37 = { + sizeof(struct ProtocolExtensionContainer_5749P18), + offsetof(struct ProtocolExtensionContainer_5749P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P18 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P18_tags_37, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P18_tags_37) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P18_tags_37[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P18_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P18_tags_37) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P18_tags_37[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P18_constr_37, + asn_MBR_ProtocolExtensionContainer_5749P18_37, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P18_specs_37 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P19, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P19_specs_39 = { + sizeof(struct ProtocolExtensionContainer_5749P19), + offsetof(struct ProtocolExtensionContainer_5749P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P19 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P19_tags_39, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P19_tags_39) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P19_tags_39[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P19_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P19_tags_39) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P19_tags_39[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P19_constr_39, + asn_MBR_ProtocolExtensionContainer_5749P19_39, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P19_specs_39 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P20_41[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P20, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P20_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P20_specs_41 = { + sizeof(struct ProtocolExtensionContainer_5749P20), + offsetof(struct ProtocolExtensionContainer_5749P20, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P20 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P20_tags_41, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P20_tags_41) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P20_tags_41[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P20_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P20_tags_41) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P20_tags_41[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P20_constr_41, + asn_MBR_ProtocolExtensionContainer_5749P20_41, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P20_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P21_43[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P21, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P21_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P21_specs_43 = { + sizeof(struct ProtocolExtensionContainer_5749P21), + offsetof(struct ProtocolExtensionContainer_5749P21, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P21 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P21_tags_43, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P21_tags_43) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P21_tags_43[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P21_tags_43, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P21_tags_43) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P21_tags_43[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P21_constr_43, + asn_MBR_ProtocolExtensionContainer_5749P21_43, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P21_specs_43 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P22_45[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P22, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P22_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P22_specs_45 = { + sizeof(struct ProtocolExtensionContainer_5749P22), + offsetof(struct ProtocolExtensionContainer_5749P22, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P22 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P22_tags_45, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P22_tags_45) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P22_tags_45[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P22_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P22_tags_45) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P22_tags_45[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P22_constr_45, + asn_MBR_ProtocolExtensionContainer_5749P22_45, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P22_specs_45 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P23_47[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P23, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P23_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P23_specs_47 = { + sizeof(struct ProtocolExtensionContainer_5749P23), + offsetof(struct ProtocolExtensionContainer_5749P23, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P23 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P23_tags_47, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P23_tags_47) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P23_tags_47[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P23_tags_47, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P23_tags_47) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P23_tags_47[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P23_constr_47, + asn_MBR_ProtocolExtensionContainer_5749P23_47, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P23_specs_47 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P24_49[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P24, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P24_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P24_specs_49 = { + sizeof(struct ProtocolExtensionContainer_5749P24), + offsetof(struct ProtocolExtensionContainer_5749P24, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P24 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P24_tags_49, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P24_tags_49) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P24_tags_49[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P24_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P24_tags_49) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P24_tags_49[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P24_constr_49, + asn_MBR_ProtocolExtensionContainer_5749P24_49, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P24_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P25_51[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P25, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P25_tags_51[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P25_specs_51 = { + sizeof(struct ProtocolExtensionContainer_5749P25), + offsetof(struct ProtocolExtensionContainer_5749P25, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P25 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P25_tags_51, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P25_tags_51) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P25_tags_51[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P25_tags_51, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P25_tags_51) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P25_tags_51[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P25_constr_51, + asn_MBR_ProtocolExtensionContainer_5749P25_51, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P25_specs_51 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P26_53[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P26, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P26_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P26_specs_53 = { + sizeof(struct ProtocolExtensionContainer_5749P26), + offsetof(struct ProtocolExtensionContainer_5749P26, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P26 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P26_tags_53, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P26_tags_53) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P26_tags_53[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P26_tags_53, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P26_tags_53) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P26_tags_53[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P26_constr_53, + asn_MBR_ProtocolExtensionContainer_5749P26_53, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P26_specs_53 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P27_55[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P27, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P27_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P27_specs_55 = { + sizeof(struct ProtocolExtensionContainer_5749P27), + offsetof(struct ProtocolExtensionContainer_5749P27, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P27 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P27_tags_55, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P27_tags_55) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P27_tags_55[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P27_tags_55, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P27_tags_55) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P27_tags_55[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P27_constr_55, + asn_MBR_ProtocolExtensionContainer_5749P27_55, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P27_specs_55 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P28_57[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P28, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P28_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P28_specs_57 = { + sizeof(struct ProtocolExtensionContainer_5749P28), + offsetof(struct ProtocolExtensionContainer_5749P28, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P28 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P28_tags_57, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P28_tags_57) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P28_tags_57[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P28_tags_57, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P28_tags_57) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P28_tags_57[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P28_constr_57, + asn_MBR_ProtocolExtensionContainer_5749P28_57, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P28_specs_57 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P29_59[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P29, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P29_tags_59[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P29_specs_59 = { + sizeof(struct ProtocolExtensionContainer_5749P29), + offsetof(struct ProtocolExtensionContainer_5749P29, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P29 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P29_tags_59, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P29_tags_59) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P29_tags_59[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P29_tags_59, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P29_tags_59) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P29_tags_59[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P29_constr_59, + asn_MBR_ProtocolExtensionContainer_5749P29_59, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P29_specs_59 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P30_61[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P30, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P30_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P30_specs_61 = { + sizeof(struct ProtocolExtensionContainer_5749P30), + offsetof(struct ProtocolExtensionContainer_5749P30, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P30 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P30_tags_61, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P30_tags_61) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P30_tags_61[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P30_tags_61, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P30_tags_61) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P30_tags_61[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P30_constr_61, + asn_MBR_ProtocolExtensionContainer_5749P30_61, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P30_specs_61 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P31_63[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P31, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P31_tags_63[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P31_specs_63 = { + sizeof(struct ProtocolExtensionContainer_5749P31), + offsetof(struct ProtocolExtensionContainer_5749P31, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P31 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P31_tags_63, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P31_tags_63) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P31_tags_63[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P31_tags_63, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P31_tags_63) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P31_tags_63[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P31_constr_63, + asn_MBR_ProtocolExtensionContainer_5749P31_63, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P31_specs_63 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P32_65[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P32, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P32_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P32_specs_65 = { + sizeof(struct ProtocolExtensionContainer_5749P32), + offsetof(struct ProtocolExtensionContainer_5749P32, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P32 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P32_tags_65, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P32_tags_65) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P32_tags_65[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P32_tags_65, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P32_tags_65) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P32_tags_65[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P32_constr_65, + asn_MBR_ProtocolExtensionContainer_5749P32_65, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P32_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P33_67[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P33, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P33_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P33_specs_67 = { + sizeof(struct ProtocolExtensionContainer_5749P33), + offsetof(struct ProtocolExtensionContainer_5749P33, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P33 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P33_tags_67, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P33_tags_67) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P33_tags_67[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P33_tags_67, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P33_tags_67) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P33_tags_67[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P33_constr_67, + asn_MBR_ProtocolExtensionContainer_5749P33_67, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P33_specs_67 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P34_69[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P34, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P34_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P34_specs_69 = { + sizeof(struct ProtocolExtensionContainer_5749P34), + offsetof(struct ProtocolExtensionContainer_5749P34, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P34 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P34_tags_69, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P34_tags_69) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P34_tags_69[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P34_tags_69, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P34_tags_69) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P34_tags_69[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P34_constr_69, + asn_MBR_ProtocolExtensionContainer_5749P34_69, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P34_specs_69 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P35_71[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P35, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P35_tags_71[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P35_specs_71 = { + sizeof(struct ProtocolExtensionContainer_5749P35), + offsetof(struct ProtocolExtensionContainer_5749P35, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P35 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P35_tags_71, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P35_tags_71) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P35_tags_71[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P35_tags_71, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P35_tags_71) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P35_tags_71[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P35_constr_71, + asn_MBR_ProtocolExtensionContainer_5749P35_71, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P35_specs_71 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P36_73[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P36, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P36_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P36_specs_73 = { + sizeof(struct ProtocolExtensionContainer_5749P36), + offsetof(struct ProtocolExtensionContainer_5749P36, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P36 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P36_tags_73, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P36_tags_73) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P36_tags_73[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P36_tags_73, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P36_tags_73) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P36_tags_73[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P36_constr_73, + asn_MBR_ProtocolExtensionContainer_5749P36_73, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P36_specs_73 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P37_75[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P37, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P37_tags_75[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P37_specs_75 = { + sizeof(struct ProtocolExtensionContainer_5749P37), + offsetof(struct ProtocolExtensionContainer_5749P37, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P37 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P37_tags_75, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P37_tags_75) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P37_tags_75[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P37_tags_75, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P37_tags_75) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P37_tags_75[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P37_constr_75, + asn_MBR_ProtocolExtensionContainer_5749P37_75, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P37_specs_75 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P38_77[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P38, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P38_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P38_specs_77 = { + sizeof(struct ProtocolExtensionContainer_5749P38), + offsetof(struct ProtocolExtensionContainer_5749P38, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P38 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P38_tags_77, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P38_tags_77) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P38_tags_77[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P38_tags_77, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P38_tags_77) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P38_tags_77[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P38_constr_77, + asn_MBR_ProtocolExtensionContainer_5749P38_77, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P38_specs_77 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P39_79[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P39, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P39_tags_79[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P39_specs_79 = { + sizeof(struct ProtocolExtensionContainer_5749P39), + offsetof(struct ProtocolExtensionContainer_5749P39, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P39 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P39_tags_79, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P39_tags_79) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P39_tags_79[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P39_tags_79, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P39_tags_79) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P39_tags_79[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P39_constr_79, + asn_MBR_ProtocolExtensionContainer_5749P39_79, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P39_specs_79 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P40_81[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P40, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P40_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P40_specs_81 = { + sizeof(struct ProtocolExtensionContainer_5749P40), + offsetof(struct ProtocolExtensionContainer_5749P40, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P40 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P40_tags_81, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P40_tags_81) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P40_tags_81[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P40_tags_81, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P40_tags_81) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P40_tags_81[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P40_constr_81, + asn_MBR_ProtocolExtensionContainer_5749P40_81, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P40_specs_81 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P41_83[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P41, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P41_tags_83[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P41_specs_83 = { + sizeof(struct ProtocolExtensionContainer_5749P41), + offsetof(struct ProtocolExtensionContainer_5749P41, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P41 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P41_tags_83, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P41_tags_83) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P41_tags_83[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P41_tags_83, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P41_tags_83) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P41_tags_83[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P41_constr_83, + asn_MBR_ProtocolExtensionContainer_5749P41_83, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P41_specs_83 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P42_85[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P42, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P42_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P42_specs_85 = { + sizeof(struct ProtocolExtensionContainer_5749P42), + offsetof(struct ProtocolExtensionContainer_5749P42, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P42 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P42_tags_85, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P42_tags_85) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P42_tags_85[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P42_tags_85, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P42_tags_85) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P42_tags_85[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P42_constr_85, + asn_MBR_ProtocolExtensionContainer_5749P42_85, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P42_specs_85 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P43_87[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P43, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P43_tags_87[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P43_specs_87 = { + sizeof(struct ProtocolExtensionContainer_5749P43), + offsetof(struct ProtocolExtensionContainer_5749P43, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P43 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P43_tags_87, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P43_tags_87) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P43_tags_87[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P43_tags_87, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P43_tags_87) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P43_tags_87[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P43_constr_87, + asn_MBR_ProtocolExtensionContainer_5749P43_87, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P43_specs_87 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P44_89[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P44, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P44_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P44_specs_89 = { + sizeof(struct ProtocolExtensionContainer_5749P44), + offsetof(struct ProtocolExtensionContainer_5749P44, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P44 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P44_tags_89, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P44_tags_89) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P44_tags_89[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P44_tags_89, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P44_tags_89) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P44_tags_89[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P44_constr_89, + asn_MBR_ProtocolExtensionContainer_5749P44_89, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P44_specs_89 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P45_91[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P45, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P45_tags_91[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P45_specs_91 = { + sizeof(struct ProtocolExtensionContainer_5749P45), + offsetof(struct ProtocolExtensionContainer_5749P45, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P45 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P45_tags_91, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P45_tags_91) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P45_tags_91[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P45_tags_91, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P45_tags_91) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P45_tags_91[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P45_constr_91, + asn_MBR_ProtocolExtensionContainer_5749P45_91, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P45_specs_91 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P46_93[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P46, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P46_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P46_specs_93 = { + sizeof(struct ProtocolExtensionContainer_5749P46), + offsetof(struct ProtocolExtensionContainer_5749P46, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P46 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P46_tags_93, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P46_tags_93) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P46_tags_93[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P46_tags_93, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P46_tags_93) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P46_tags_93[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P46_constr_93, + asn_MBR_ProtocolExtensionContainer_5749P46_93, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P46_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P47_95[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P47, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P47_tags_95[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P47_specs_95 = { + sizeof(struct ProtocolExtensionContainer_5749P47), + offsetof(struct ProtocolExtensionContainer_5749P47, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P47 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P47_tags_95, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P47_tags_95) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P47_tags_95[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P47_tags_95, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P47_tags_95) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P47_tags_95[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P47_constr_95, + asn_MBR_ProtocolExtensionContainer_5749P47_95, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P47_specs_95 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P48_97[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P48, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P48_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P48_specs_97 = { + sizeof(struct ProtocolExtensionContainer_5749P48), + offsetof(struct ProtocolExtensionContainer_5749P48, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P48 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P48_tags_97, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P48_tags_97) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P48_tags_97[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P48_tags_97, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P48_tags_97) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P48_tags_97[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P48_constr_97, + asn_MBR_ProtocolExtensionContainer_5749P48_97, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P48_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P49_99[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P49, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P49_tags_99[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P49_specs_99 = { + sizeof(struct ProtocolExtensionContainer_5749P49), + offsetof(struct ProtocolExtensionContainer_5749P49, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P49 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P49_tags_99, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P49_tags_99) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P49_tags_99[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P49_tags_99, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P49_tags_99) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P49_tags_99[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P49_constr_99, + asn_MBR_ProtocolExtensionContainer_5749P49_99, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P49_specs_99 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P50_101[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P50, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P50_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P50_specs_101 = { + sizeof(struct ProtocolExtensionContainer_5749P50), + offsetof(struct ProtocolExtensionContainer_5749P50, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P50 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P50_tags_101, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P50_tags_101) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P50_tags_101[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P50_tags_101, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P50_tags_101) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P50_tags_101[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P50_constr_101, + asn_MBR_ProtocolExtensionContainer_5749P50_101, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P50_specs_101 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P51_103[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P51, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P51_tags_103[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P51_specs_103 = { + sizeof(struct ProtocolExtensionContainer_5749P51), + offsetof(struct ProtocolExtensionContainer_5749P51, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P51 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P51_tags_103, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P51_tags_103) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P51_tags_103[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P51_tags_103, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P51_tags_103) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P51_tags_103[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P51_constr_103, + asn_MBR_ProtocolExtensionContainer_5749P51_103, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P51_specs_103 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P52_105[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P52, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P52_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P52_specs_105 = { + sizeof(struct ProtocolExtensionContainer_5749P52), + offsetof(struct ProtocolExtensionContainer_5749P52, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P52 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P52_tags_105, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P52_tags_105) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P52_tags_105[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P52_tags_105, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P52_tags_105) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P52_tags_105[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P52_constr_105, + asn_MBR_ProtocolExtensionContainer_5749P52_105, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P52_specs_105 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P53_107[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P53, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P53_tags_107[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P53_specs_107 = { + sizeof(struct ProtocolExtensionContainer_5749P53), + offsetof(struct ProtocolExtensionContainer_5749P53, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P53 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P53_tags_107, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P53_tags_107) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P53_tags_107[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P53_tags_107, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P53_tags_107) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P53_tags_107[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P53_constr_107, + asn_MBR_ProtocolExtensionContainer_5749P53_107, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P53_specs_107 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P54_109[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P54, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P54_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P54_specs_109 = { + sizeof(struct ProtocolExtensionContainer_5749P54), + offsetof(struct ProtocolExtensionContainer_5749P54, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P54 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P54_tags_109, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P54_tags_109) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P54_tags_109[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P54_tags_109, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P54_tags_109) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P54_tags_109[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P54_constr_109, + asn_MBR_ProtocolExtensionContainer_5749P54_109, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P54_specs_109 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P55_111[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P55, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P55_tags_111[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P55_specs_111 = { + sizeof(struct ProtocolExtensionContainer_5749P55), + offsetof(struct ProtocolExtensionContainer_5749P55, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P55 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P55_tags_111, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P55_tags_111) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P55_tags_111[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P55_tags_111, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P55_tags_111) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P55_tags_111[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P55_constr_111, + asn_MBR_ProtocolExtensionContainer_5749P55_111, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P55_specs_111 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P56_113[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P56, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P56_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P56_specs_113 = { + sizeof(struct ProtocolExtensionContainer_5749P56), + offsetof(struct ProtocolExtensionContainer_5749P56, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P56 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P56_tags_113, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P56_tags_113) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P56_tags_113[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P56_tags_113, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P56_tags_113) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P56_tags_113[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P56_constr_113, + asn_MBR_ProtocolExtensionContainer_5749P56_113, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P56_specs_113 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P57_115[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P57, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P57_tags_115[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P57_specs_115 = { + sizeof(struct ProtocolExtensionContainer_5749P57), + offsetof(struct ProtocolExtensionContainer_5749P57, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P57 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P57_tags_115, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P57_tags_115) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P57_tags_115[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P57_tags_115, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P57_tags_115) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P57_tags_115[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P57_constr_115, + asn_MBR_ProtocolExtensionContainer_5749P57_115, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P57_specs_115 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P58_117[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P58, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P58_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P58_specs_117 = { + sizeof(struct ProtocolExtensionContainer_5749P58), + offsetof(struct ProtocolExtensionContainer_5749P58, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P58 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P58_tags_117, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P58_tags_117) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P58_tags_117[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P58_tags_117, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P58_tags_117) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P58_tags_117[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P58_constr_117, + asn_MBR_ProtocolExtensionContainer_5749P58_117, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P58_specs_117 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P59_119[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P59, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P59_tags_119[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P59_specs_119 = { + sizeof(struct ProtocolExtensionContainer_5749P59), + offsetof(struct ProtocolExtensionContainer_5749P59, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P59 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P59_tags_119, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P59_tags_119) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P59_tags_119[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P59_tags_119, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P59_tags_119) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P59_tags_119[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P59_constr_119, + asn_MBR_ProtocolExtensionContainer_5749P59_119, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P59_specs_119 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P60_121[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P60, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P60_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P60_specs_121 = { + sizeof(struct ProtocolExtensionContainer_5749P60), + offsetof(struct ProtocolExtensionContainer_5749P60, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P60 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P60_tags_121, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P60_tags_121) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P60_tags_121[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P60_tags_121, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P60_tags_121) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P60_tags_121[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P60_constr_121, + asn_MBR_ProtocolExtensionContainer_5749P60_121, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P60_specs_121 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P61_123[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P61, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P61_tags_123[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P61_specs_123 = { + sizeof(struct ProtocolExtensionContainer_5749P61), + offsetof(struct ProtocolExtensionContainer_5749P61, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P61 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P61_tags_123, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P61_tags_123) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P61_tags_123[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P61_tags_123, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P61_tags_123) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P61_tags_123[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P61_constr_123, + asn_MBR_ProtocolExtensionContainer_5749P61_123, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P61_specs_123 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P62_125[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P62, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P62_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P62_specs_125 = { + sizeof(struct ProtocolExtensionContainer_5749P62), + offsetof(struct ProtocolExtensionContainer_5749P62, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P62 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P62_tags_125, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P62_tags_125) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P62_tags_125[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P62_tags_125, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P62_tags_125) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P62_tags_125[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P62_constr_125, + asn_MBR_ProtocolExtensionContainer_5749P62_125, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P62_specs_125 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P63_127[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P63, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P63_tags_127[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P63_specs_127 = { + sizeof(struct ProtocolExtensionContainer_5749P63), + offsetof(struct ProtocolExtensionContainer_5749P63, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P63 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P63_tags_127, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P63_tags_127) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P63_tags_127[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P63_tags_127, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P63_tags_127) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P63_tags_127[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P63_constr_127, + asn_MBR_ProtocolExtensionContainer_5749P63_127, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P63_specs_127 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P64_129[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P64, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P64_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P64_specs_129 = { + sizeof(struct ProtocolExtensionContainer_5749P64), + offsetof(struct ProtocolExtensionContainer_5749P64, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P64 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P64_tags_129, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P64_tags_129) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P64_tags_129[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P64_tags_129, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P64_tags_129) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P64_tags_129[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P64_constr_129, + asn_MBR_ProtocolExtensionContainer_5749P64_129, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P64_specs_129 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P65_131[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P65, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P65_tags_131[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P65_specs_131 = { + sizeof(struct ProtocolExtensionContainer_5749P65), + offsetof(struct ProtocolExtensionContainer_5749P65, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P65 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P65_tags_131, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P65_tags_131) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P65_tags_131[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P65_tags_131, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P65_tags_131) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P65_tags_131[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P65_constr_131, + asn_MBR_ProtocolExtensionContainer_5749P65_131, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P65_specs_131 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P66_133[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P66, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P66_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P66_specs_133 = { + sizeof(struct ProtocolExtensionContainer_5749P66), + offsetof(struct ProtocolExtensionContainer_5749P66, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P66 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P66_tags_133, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P66_tags_133) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P66_tags_133[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P66_tags_133, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P66_tags_133) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P66_tags_133[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P66_constr_133, + asn_MBR_ProtocolExtensionContainer_5749P66_133, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P66_specs_133 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P67_135[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P67, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P67_tags_135[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P67_specs_135 = { + sizeof(struct ProtocolExtensionContainer_5749P67), + offsetof(struct ProtocolExtensionContainer_5749P67, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P67 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P67_tags_135, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P67_tags_135) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P67_tags_135[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P67_tags_135, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P67_tags_135) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P67_tags_135[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P67_constr_135, + asn_MBR_ProtocolExtensionContainer_5749P67_135, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P67_specs_135 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P68_137[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P68, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P68_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P68_specs_137 = { + sizeof(struct ProtocolExtensionContainer_5749P68), + offsetof(struct ProtocolExtensionContainer_5749P68, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P68 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P68_tags_137, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P68_tags_137) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P68_tags_137[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P68_tags_137, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P68_tags_137) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P68_tags_137[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P68_constr_137, + asn_MBR_ProtocolExtensionContainer_5749P68_137, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P68_specs_137 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P69_139[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P69, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P69_tags_139[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P69_specs_139 = { + sizeof(struct ProtocolExtensionContainer_5749P69), + offsetof(struct ProtocolExtensionContainer_5749P69, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P69 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P69_tags_139, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P69_tags_139) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P69_tags_139[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P69_tags_139, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P69_tags_139) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P69_tags_139[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P69_constr_139, + asn_MBR_ProtocolExtensionContainer_5749P69_139, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P69_specs_139 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P70_141[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P70, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P70_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P70_specs_141 = { + sizeof(struct ProtocolExtensionContainer_5749P70), + offsetof(struct ProtocolExtensionContainer_5749P70, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P70 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P70_tags_141, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P70_tags_141) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P70_tags_141[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P70_tags_141, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P70_tags_141) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P70_tags_141[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P70_constr_141, + asn_MBR_ProtocolExtensionContainer_5749P70_141, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P70_specs_141 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P71_143[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P71, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P71_tags_143[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P71_specs_143 = { + sizeof(struct ProtocolExtensionContainer_5749P71), + offsetof(struct ProtocolExtensionContainer_5749P71, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P71 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P71_tags_143, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P71_tags_143) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P71_tags_143[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P71_tags_143, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P71_tags_143) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P71_tags_143[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P71_constr_143, + asn_MBR_ProtocolExtensionContainer_5749P71_143, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P71_specs_143 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P72_145[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P72, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P72_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P72_specs_145 = { + sizeof(struct ProtocolExtensionContainer_5749P72), + offsetof(struct ProtocolExtensionContainer_5749P72, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P72 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P72_tags_145, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P72_tags_145) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P72_tags_145[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P72_tags_145, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P72_tags_145) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P72_tags_145[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P72_constr_145, + asn_MBR_ProtocolExtensionContainer_5749P72_145, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P72_specs_145 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P73_147[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P73, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P73_tags_147[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P73_specs_147 = { + sizeof(struct ProtocolExtensionContainer_5749P73), + offsetof(struct ProtocolExtensionContainer_5749P73, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P73 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P73_tags_147, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P73_tags_147) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P73_tags_147[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P73_tags_147, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P73_tags_147) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P73_tags_147[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P73_constr_147, + asn_MBR_ProtocolExtensionContainer_5749P73_147, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P73_specs_147 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P74_149[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P74, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P74_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P74_specs_149 = { + sizeof(struct ProtocolExtensionContainer_5749P74), + offsetof(struct ProtocolExtensionContainer_5749P74, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P74 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P74_tags_149, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P74_tags_149) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P74_tags_149[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P74_tags_149, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P74_tags_149) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P74_tags_149[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P74_constr_149, + asn_MBR_ProtocolExtensionContainer_5749P74_149, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P74_specs_149 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_5749P75_151[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolExtensionField_5753P75, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_5749P75_tags_151[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_5749P75_specs_151 = { + sizeof(struct ProtocolExtensionContainer_5749P75), + offsetof(struct ProtocolExtensionContainer_5749P75, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P75 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionContainer_5749P75_tags_151, + sizeof(asn_DEF_ProtocolExtensionContainer_5749P75_tags_151) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P75_tags_151[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_5749P75_tags_151, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_5749P75_tags_151) + /sizeof(asn_DEF_ProtocolExtensionContainer_5749P75_tags_151[0]), /* 1 */ + &asn_PER_type_ProtocolExtensionContainer_5749P75_constr_151, + asn_MBR_ProtocolExtensionContainer_5749P75_151, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_5749P75_specs_151 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/ProtocolExtensionContainer.h b/lib/asn/asn1c/ProtocolExtensionContainer.h new file mode 100644 index 0000000000..861b08f71e --- /dev/null +++ b/lib/asn/asn1c/ProtocolExtensionContainer.h @@ -0,0 +1,569 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolExtensionContainer_H_ +#define _ProtocolExtensionContainer_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionField; + +/* ProtocolExtensionContainer */ +typedef struct ProtocolExtensionContainer_5749P0 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P0_t; +typedef struct ProtocolExtensionContainer_5749P1 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P1_t; +typedef struct ProtocolExtensionContainer_5749P2 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P2_t; +typedef struct ProtocolExtensionContainer_5749P3 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P3_t; +typedef struct ProtocolExtensionContainer_5749P4 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P4_t; +typedef struct ProtocolExtensionContainer_5749P5 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P5_t; +typedef struct ProtocolExtensionContainer_5749P6 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P6_t; +typedef struct ProtocolExtensionContainer_5749P7 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P7_t; +typedef struct ProtocolExtensionContainer_5749P8 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P8_t; +typedef struct ProtocolExtensionContainer_5749P9 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P9_t; +typedef struct ProtocolExtensionContainer_5749P10 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P10_t; +typedef struct ProtocolExtensionContainer_5749P11 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P11_t; +typedef struct ProtocolExtensionContainer_5749P12 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P12_t; +typedef struct ProtocolExtensionContainer_5749P13 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P13_t; +typedef struct ProtocolExtensionContainer_5749P14 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P14_t; +typedef struct ProtocolExtensionContainer_5749P15 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P15_t; +typedef struct ProtocolExtensionContainer_5749P16 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P16_t; +typedef struct ProtocolExtensionContainer_5749P17 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P17_t; +typedef struct ProtocolExtensionContainer_5749P18 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P18_t; +typedef struct ProtocolExtensionContainer_5749P19 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P19_t; +typedef struct ProtocolExtensionContainer_5749P20 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P20_t; +typedef struct ProtocolExtensionContainer_5749P21 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P21_t; +typedef struct ProtocolExtensionContainer_5749P22 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P22_t; +typedef struct ProtocolExtensionContainer_5749P23 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P23_t; +typedef struct ProtocolExtensionContainer_5749P24 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P24_t; +typedef struct ProtocolExtensionContainer_5749P25 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P25_t; +typedef struct ProtocolExtensionContainer_5749P26 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P26_t; +typedef struct ProtocolExtensionContainer_5749P27 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P27_t; +typedef struct ProtocolExtensionContainer_5749P28 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P28_t; +typedef struct ProtocolExtensionContainer_5749P29 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P29_t; +typedef struct ProtocolExtensionContainer_5749P30 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P30_t; +typedef struct ProtocolExtensionContainer_5749P31 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P31_t; +typedef struct ProtocolExtensionContainer_5749P32 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P32_t; +typedef struct ProtocolExtensionContainer_5749P33 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P33_t; +typedef struct ProtocolExtensionContainer_5749P34 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P34_t; +typedef struct ProtocolExtensionContainer_5749P35 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P35_t; +typedef struct ProtocolExtensionContainer_5749P36 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P36_t; +typedef struct ProtocolExtensionContainer_5749P37 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P37_t; +typedef struct ProtocolExtensionContainer_5749P38 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P38_t; +typedef struct ProtocolExtensionContainer_5749P39 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P39_t; +typedef struct ProtocolExtensionContainer_5749P40 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P40_t; +typedef struct ProtocolExtensionContainer_5749P41 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P41_t; +typedef struct ProtocolExtensionContainer_5749P42 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P42_t; +typedef struct ProtocolExtensionContainer_5749P43 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P43_t; +typedef struct ProtocolExtensionContainer_5749P44 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P44_t; +typedef struct ProtocolExtensionContainer_5749P45 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P45_t; +typedef struct ProtocolExtensionContainer_5749P46 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P46_t; +typedef struct ProtocolExtensionContainer_5749P47 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P47_t; +typedef struct ProtocolExtensionContainer_5749P48 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P48_t; +typedef struct ProtocolExtensionContainer_5749P49 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P49_t; +typedef struct ProtocolExtensionContainer_5749P50 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P50_t; +typedef struct ProtocolExtensionContainer_5749P51 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P51_t; +typedef struct ProtocolExtensionContainer_5749P52 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P52_t; +typedef struct ProtocolExtensionContainer_5749P53 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P53_t; +typedef struct ProtocolExtensionContainer_5749P54 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P54_t; +typedef struct ProtocolExtensionContainer_5749P55 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P55_t; +typedef struct ProtocolExtensionContainer_5749P56 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P56_t; +typedef struct ProtocolExtensionContainer_5749P57 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P57_t; +typedef struct ProtocolExtensionContainer_5749P58 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P58_t; +typedef struct ProtocolExtensionContainer_5749P59 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P59_t; +typedef struct ProtocolExtensionContainer_5749P60 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P60_t; +typedef struct ProtocolExtensionContainer_5749P61 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P61_t; +typedef struct ProtocolExtensionContainer_5749P62 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P62_t; +typedef struct ProtocolExtensionContainer_5749P63 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P63_t; +typedef struct ProtocolExtensionContainer_5749P64 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P64_t; +typedef struct ProtocolExtensionContainer_5749P65 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P65_t; +typedef struct ProtocolExtensionContainer_5749P66 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P66_t; +typedef struct ProtocolExtensionContainer_5749P67 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P67_t; +typedef struct ProtocolExtensionContainer_5749P68 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P68_t; +typedef struct ProtocolExtensionContainer_5749P69 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P69_t; +typedef struct ProtocolExtensionContainer_5749P70 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P70_t; +typedef struct ProtocolExtensionContainer_5749P71 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P71_t; +typedef struct ProtocolExtensionContainer_5749P72 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P72_t; +typedef struct ProtocolExtensionContainer_5749P73 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P73_t; +typedef struct ProtocolExtensionContainer_5749P74 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P74_t; +typedef struct ProtocolExtensionContainer_5749P75 { + A_SEQUENCE_OF(struct ProtocolExtensionField) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_5749P75_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P0; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P2; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P4; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P6; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P8; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P10; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P12; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P14; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P16; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P18; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P20; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P22; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P24; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P26; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P28; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P30; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P32; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P34; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P36; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P38; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P39; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P40; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P41; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P42; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P43; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P44; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P45; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P46; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P47; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P48; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P49; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P50; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P51; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P52; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P53; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P54; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P55; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P56; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P57; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P58; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P59; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P60; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P61; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P62; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P63; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P64; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P65; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P66; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P67; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P68; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P69; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P70; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P71; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P72; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P73; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P74; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_5749P75; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionField.h" + +#endif /* _ProtocolExtensionContainer_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolExtensionField.c b/lib/asn/asn1c/ProtocolExtensionField.c new file mode 100644 index 0000000000..6532fbf40c --- /dev/null +++ b/lib/asn/asn1c/ProtocolExtensionField.c @@ -0,0 +1,11485 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolExtensionField.h" + +static int +memb_id_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_5(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_5(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_5(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_9(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_9(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_9(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_13(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_13(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_13(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_17(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_17(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_17(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_21(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_21(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_21(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_25(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_25(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_25(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_29(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_29(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_29(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_33(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_33(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_33(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_37(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_37(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_37(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_41(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_41(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_41(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_45(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_45(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_45(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_49(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_49(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_49(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_53(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_53(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_53(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_57(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_57(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_57(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_61(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_61(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_61(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_65(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_65(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_65(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_69(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_69(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_69(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_73(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_73(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_73(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_77(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_77(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_77(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_81(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_81(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_81(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_85(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_85(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_85(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_89(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_89(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_89(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_93(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_93(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_93(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_97(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_97(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_97(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_101(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_101(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_101(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_105(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_105(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_105(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_109(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_109(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_109(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_113(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_113(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_113(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_117(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_117(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_117(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_121(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_121(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_121(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_125(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_125(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_125(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_129(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_129(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_129(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_133(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_133(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_133(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_137(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_137(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_137(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_141(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_141(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_141(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_145(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_145(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_145(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_149(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_149(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_149(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_153(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_153(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_153(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_157(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_157(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_157(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_161(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_161(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_161(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_165(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_165(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_165(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_169(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_169(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_169(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_173(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_173(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_173(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_177(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_177(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_177(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_181(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_181(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_181(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_185(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_185(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_185(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_189(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_189(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_189(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_193(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_193(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_193(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_197(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_197(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_197(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_201(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_201(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_201(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_205(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_205(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_205(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_209(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_209(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_209(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_213(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_213(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_213(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_217(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_217(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_217(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_221(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_221(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_221(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_225(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_225(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_225(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_229(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_229(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_229(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_233(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_233(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_233(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_237(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_237(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_237(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_241(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_241(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_241(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_245(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_245(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_245(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_249(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_249(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_249(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_253(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_253(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_253(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_257(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_257(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_257(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_261(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_261(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_261(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_265(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_265(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_265(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_269(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_269(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_269(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_273(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_273(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_273(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_277(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_277(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_277(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_281(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_281(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_281(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_285(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_285(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_285(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_289(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_289(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_289(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_293(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_293(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_293(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_297(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_297(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_297(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_301(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_301(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_301(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_4 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_6 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_7 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_8 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_10 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_11 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_12 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_14 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_15 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_16 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_18 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_19 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_20 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_22 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_23 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_24 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_26 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_27 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_28 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_30 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_31 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_32 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_34 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_35 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_36 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_38 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_39 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_40 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_42 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_43 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_44 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_46 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_47 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_48 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_50 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_51 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_52 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_54 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_55 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_56 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_58 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_59 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_60 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_62 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_63 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_64 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_66 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_67 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_68 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_70 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_71 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_72 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_74 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_75 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_76 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_78 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_79 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_80 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_82 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_83 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_84 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_86 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_87 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_88 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_90 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_91 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_92 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_94 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_95 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_96 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_98 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_99 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_100 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_102 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_103 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_104 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_106 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_107 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_108 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_110 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_111 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_112 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_114 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_115 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_116 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_118 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_119 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_120 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_122 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_123 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_124 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_126 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_127 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_128 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_130 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_131 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_132 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_134 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_135 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_136 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_138 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_139 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_140 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_142 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_143 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_144 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_146 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_147 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_148 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_150 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_151 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_152 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_154 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_155 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_156 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_158 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_159 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_160 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_162 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_163 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_164 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_166 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_167 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_168 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_170 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_171 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_172 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_174 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_175 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_176 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_178 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_179 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_180 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_182 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_183 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_184 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_186 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_187 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_188 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_190 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_191 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_192 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_194 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_195 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_196 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_198 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_199 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_200 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_202 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_203 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_204 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_206 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_207 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_208 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_210 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_211 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_212 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_214 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_215 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_216 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_218 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_219 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_220 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_222 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_223 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_224 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_226 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_227 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_228 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_230 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_231 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_232 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_234 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_235 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_236 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_238 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_239 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_240 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_242 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_243 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_244 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_246 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_247 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_248 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_250 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_251 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_252 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_254 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_255 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_256 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_258 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_259 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_260 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_262 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_263 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_264 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_266 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_267 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_268 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_270 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_271 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_272 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_274 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_275 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_276 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_278 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_279 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_280 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_282 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_283 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_284 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_286 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_287 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_288 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_290 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_291 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_292 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_294 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_295 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_296 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_298 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_299 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_300 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_302 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_303 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_304 GCC_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_ProtocolExtensionField_5753P0_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P0, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_1, + &asn_PER_memb_id_constr_2, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P0, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_1, + &asn_PER_memb_criticality_constr_3, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P0, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_1, + &asn_PER_memb_extensionValue_constr_4, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P0_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P0_specs_1 = { + sizeof(struct ProtocolExtensionField_5753P0), + offsetof(struct ProtocolExtensionField_5753P0, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P0_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P0 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P0_tags_1, + sizeof(asn_DEF_ProtocolExtensionField_5753P0_tags_1) + /sizeof(asn_DEF_ProtocolExtensionField_5753P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P0_tags_1) + /sizeof(asn_DEF_ProtocolExtensionField_5753P0_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P0_1, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P0_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P1_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P1, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_5, + &asn_PER_memb_id_constr_6, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P1, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_5, + &asn_PER_memb_criticality_constr_7, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P1, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_5, + &asn_PER_memb_extensionValue_constr_8, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P1_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P1_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P1_specs_5 = { + sizeof(struct ProtocolExtensionField_5753P1), + offsetof(struct ProtocolExtensionField_5753P1, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P1_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P1 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P1_tags_5, + sizeof(asn_DEF_ProtocolExtensionField_5753P1_tags_5) + /sizeof(asn_DEF_ProtocolExtensionField_5753P1_tags_5[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P1_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P1_tags_5) + /sizeof(asn_DEF_ProtocolExtensionField_5753P1_tags_5[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P1_5, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P1_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P2_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P2, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_9, + &asn_PER_memb_id_constr_10, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P2, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_9, + &asn_PER_memb_criticality_constr_11, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P2, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_9, + &asn_PER_memb_extensionValue_constr_12, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P2_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P2_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P2_specs_9 = { + sizeof(struct ProtocolExtensionField_5753P2), + offsetof(struct ProtocolExtensionField_5753P2, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P2_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P2 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P2_tags_9, + sizeof(asn_DEF_ProtocolExtensionField_5753P2_tags_9) + /sizeof(asn_DEF_ProtocolExtensionField_5753P2_tags_9[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P2_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P2_tags_9) + /sizeof(asn_DEF_ProtocolExtensionField_5753P2_tags_9[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P2_9, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P2_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P3_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P3, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_13, + &asn_PER_memb_id_constr_14, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P3, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_13, + &asn_PER_memb_criticality_constr_15, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P3, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_13, + &asn_PER_memb_extensionValue_constr_16, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P3_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P3_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P3_specs_13 = { + sizeof(struct ProtocolExtensionField_5753P3), + offsetof(struct ProtocolExtensionField_5753P3, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P3_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P3 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P3_tags_13, + sizeof(asn_DEF_ProtocolExtensionField_5753P3_tags_13) + /sizeof(asn_DEF_ProtocolExtensionField_5753P3_tags_13[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P3_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P3_tags_13) + /sizeof(asn_DEF_ProtocolExtensionField_5753P3_tags_13[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P3_13, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P3_specs_13 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P4_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P4, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_17, + &asn_PER_memb_id_constr_18, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P4, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_17, + &asn_PER_memb_criticality_constr_19, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P4, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_17, + &asn_PER_memb_extensionValue_constr_20, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P4_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P4_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P4_specs_17 = { + sizeof(struct ProtocolExtensionField_5753P4), + offsetof(struct ProtocolExtensionField_5753P4, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P4_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P4 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P4_tags_17, + sizeof(asn_DEF_ProtocolExtensionField_5753P4_tags_17) + /sizeof(asn_DEF_ProtocolExtensionField_5753P4_tags_17[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P4_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P4_tags_17) + /sizeof(asn_DEF_ProtocolExtensionField_5753P4_tags_17[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P4_17, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P4_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P5_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P5, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_21, + &asn_PER_memb_id_constr_22, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P5, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_21, + &asn_PER_memb_criticality_constr_23, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P5, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_21, + &asn_PER_memb_extensionValue_constr_24, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P5_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P5_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P5_specs_21 = { + sizeof(struct ProtocolExtensionField_5753P5), + offsetof(struct ProtocolExtensionField_5753P5, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P5_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P5 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P5_tags_21, + sizeof(asn_DEF_ProtocolExtensionField_5753P5_tags_21) + /sizeof(asn_DEF_ProtocolExtensionField_5753P5_tags_21[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P5_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P5_tags_21) + /sizeof(asn_DEF_ProtocolExtensionField_5753P5_tags_21[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P5_21, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P5_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P6_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P6, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_25, + &asn_PER_memb_id_constr_26, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P6, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_25, + &asn_PER_memb_criticality_constr_27, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P6, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_25, + &asn_PER_memb_extensionValue_constr_28, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P6_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P6_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P6_specs_25 = { + sizeof(struct ProtocolExtensionField_5753P6), + offsetof(struct ProtocolExtensionField_5753P6, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P6_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P6 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P6_tags_25, + sizeof(asn_DEF_ProtocolExtensionField_5753P6_tags_25) + /sizeof(asn_DEF_ProtocolExtensionField_5753P6_tags_25[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P6_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P6_tags_25) + /sizeof(asn_DEF_ProtocolExtensionField_5753P6_tags_25[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P6_25, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P6_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P7_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P7, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_29, + &asn_PER_memb_id_constr_30, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P7, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_29, + &asn_PER_memb_criticality_constr_31, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P7, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_29, + &asn_PER_memb_extensionValue_constr_32, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P7_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P7_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P7_specs_29 = { + sizeof(struct ProtocolExtensionField_5753P7), + offsetof(struct ProtocolExtensionField_5753P7, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P7_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P7 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P7_tags_29, + sizeof(asn_DEF_ProtocolExtensionField_5753P7_tags_29) + /sizeof(asn_DEF_ProtocolExtensionField_5753P7_tags_29[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P7_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P7_tags_29) + /sizeof(asn_DEF_ProtocolExtensionField_5753P7_tags_29[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P7_29, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P7_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P8_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P8, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_33, + &asn_PER_memb_id_constr_34, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P8, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_33, + &asn_PER_memb_criticality_constr_35, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P8, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_33, + &asn_PER_memb_extensionValue_constr_36, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P8_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P8_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P8_specs_33 = { + sizeof(struct ProtocolExtensionField_5753P8), + offsetof(struct ProtocolExtensionField_5753P8, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P8_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P8 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P8_tags_33, + sizeof(asn_DEF_ProtocolExtensionField_5753P8_tags_33) + /sizeof(asn_DEF_ProtocolExtensionField_5753P8_tags_33[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P8_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P8_tags_33) + /sizeof(asn_DEF_ProtocolExtensionField_5753P8_tags_33[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P8_33, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P8_specs_33 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P9_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P9, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_37, + &asn_PER_memb_id_constr_38, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P9, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_37, + &asn_PER_memb_criticality_constr_39, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P9, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_37, + &asn_PER_memb_extensionValue_constr_40, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P9_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P9_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P9_specs_37 = { + sizeof(struct ProtocolExtensionField_5753P9), + offsetof(struct ProtocolExtensionField_5753P9, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P9_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P9 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P9_tags_37, + sizeof(asn_DEF_ProtocolExtensionField_5753P9_tags_37) + /sizeof(asn_DEF_ProtocolExtensionField_5753P9_tags_37[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P9_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P9_tags_37) + /sizeof(asn_DEF_ProtocolExtensionField_5753P9_tags_37[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P9_37, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P9_specs_37 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P10_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P10, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_41, + &asn_PER_memb_id_constr_42, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P10, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_41, + &asn_PER_memb_criticality_constr_43, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P10, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_41, + &asn_PER_memb_extensionValue_constr_44, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P10_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P10_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P10_specs_41 = { + sizeof(struct ProtocolExtensionField_5753P10), + offsetof(struct ProtocolExtensionField_5753P10, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P10_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P10 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P10_tags_41, + sizeof(asn_DEF_ProtocolExtensionField_5753P10_tags_41) + /sizeof(asn_DEF_ProtocolExtensionField_5753P10_tags_41[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P10_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P10_tags_41) + /sizeof(asn_DEF_ProtocolExtensionField_5753P10_tags_41[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P10_41, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P10_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P11_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P11, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_45, + &asn_PER_memb_id_constr_46, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P11, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_45, + &asn_PER_memb_criticality_constr_47, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P11, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_45, + &asn_PER_memb_extensionValue_constr_48, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P11_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P11_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P11_specs_45 = { + sizeof(struct ProtocolExtensionField_5753P11), + offsetof(struct ProtocolExtensionField_5753P11, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P11_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P11 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P11_tags_45, + sizeof(asn_DEF_ProtocolExtensionField_5753P11_tags_45) + /sizeof(asn_DEF_ProtocolExtensionField_5753P11_tags_45[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P11_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P11_tags_45) + /sizeof(asn_DEF_ProtocolExtensionField_5753P11_tags_45[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P11_45, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P11_specs_45 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P12_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P12, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_49, + &asn_PER_memb_id_constr_50, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P12, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_49, + &asn_PER_memb_criticality_constr_51, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P12, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_49, + &asn_PER_memb_extensionValue_constr_52, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P12_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P12_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P12_specs_49 = { + sizeof(struct ProtocolExtensionField_5753P12), + offsetof(struct ProtocolExtensionField_5753P12, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P12_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P12 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P12_tags_49, + sizeof(asn_DEF_ProtocolExtensionField_5753P12_tags_49) + /sizeof(asn_DEF_ProtocolExtensionField_5753P12_tags_49[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P12_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P12_tags_49) + /sizeof(asn_DEF_ProtocolExtensionField_5753P12_tags_49[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P12_49, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P12_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P13_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P13, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_53, + &asn_PER_memb_id_constr_54, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P13, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_53, + &asn_PER_memb_criticality_constr_55, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P13, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_53, + &asn_PER_memb_extensionValue_constr_56, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P13_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P13_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P13_specs_53 = { + sizeof(struct ProtocolExtensionField_5753P13), + offsetof(struct ProtocolExtensionField_5753P13, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P13_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P13 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P13_tags_53, + sizeof(asn_DEF_ProtocolExtensionField_5753P13_tags_53) + /sizeof(asn_DEF_ProtocolExtensionField_5753P13_tags_53[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P13_tags_53, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P13_tags_53) + /sizeof(asn_DEF_ProtocolExtensionField_5753P13_tags_53[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P13_53, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P13_specs_53 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P14_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P14, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_57, + &asn_PER_memb_id_constr_58, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P14, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_57, + &asn_PER_memb_criticality_constr_59, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P14, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_57, + &asn_PER_memb_extensionValue_constr_60, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P14_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P14_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P14_specs_57 = { + sizeof(struct ProtocolExtensionField_5753P14), + offsetof(struct ProtocolExtensionField_5753P14, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P14_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P14 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P14_tags_57, + sizeof(asn_DEF_ProtocolExtensionField_5753P14_tags_57) + /sizeof(asn_DEF_ProtocolExtensionField_5753P14_tags_57[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P14_tags_57, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P14_tags_57) + /sizeof(asn_DEF_ProtocolExtensionField_5753P14_tags_57[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P14_57, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P14_specs_57 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P15_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P15, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_61, + &asn_PER_memb_id_constr_62, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P15, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_61, + &asn_PER_memb_criticality_constr_63, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P15, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_61, + &asn_PER_memb_extensionValue_constr_64, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P15_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P15_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P15_specs_61 = { + sizeof(struct ProtocolExtensionField_5753P15), + offsetof(struct ProtocolExtensionField_5753P15, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P15_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P15 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P15_tags_61, + sizeof(asn_DEF_ProtocolExtensionField_5753P15_tags_61) + /sizeof(asn_DEF_ProtocolExtensionField_5753P15_tags_61[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P15_tags_61, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P15_tags_61) + /sizeof(asn_DEF_ProtocolExtensionField_5753P15_tags_61[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P15_61, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P15_specs_61 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P16_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P16, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_65, + &asn_PER_memb_id_constr_66, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P16, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_65, + &asn_PER_memb_criticality_constr_67, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P16, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_65, + &asn_PER_memb_extensionValue_constr_68, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P16_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P16_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P16_specs_65 = { + sizeof(struct ProtocolExtensionField_5753P16), + offsetof(struct ProtocolExtensionField_5753P16, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P16_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P16 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P16_tags_65, + sizeof(asn_DEF_ProtocolExtensionField_5753P16_tags_65) + /sizeof(asn_DEF_ProtocolExtensionField_5753P16_tags_65[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P16_tags_65, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P16_tags_65) + /sizeof(asn_DEF_ProtocolExtensionField_5753P16_tags_65[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P16_65, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P16_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P17_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P17, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_69, + &asn_PER_memb_id_constr_70, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P17, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_69, + &asn_PER_memb_criticality_constr_71, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P17, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_69, + &asn_PER_memb_extensionValue_constr_72, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P17_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P17_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P17_specs_69 = { + sizeof(struct ProtocolExtensionField_5753P17), + offsetof(struct ProtocolExtensionField_5753P17, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P17_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P17 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P17_tags_69, + sizeof(asn_DEF_ProtocolExtensionField_5753P17_tags_69) + /sizeof(asn_DEF_ProtocolExtensionField_5753P17_tags_69[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P17_tags_69, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P17_tags_69) + /sizeof(asn_DEF_ProtocolExtensionField_5753P17_tags_69[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P17_69, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P17_specs_69 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P18_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P18, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_73, + &asn_PER_memb_id_constr_74, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P18, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_73, + &asn_PER_memb_criticality_constr_75, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P18, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_73, + &asn_PER_memb_extensionValue_constr_76, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P18_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P18_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P18_specs_73 = { + sizeof(struct ProtocolExtensionField_5753P18), + offsetof(struct ProtocolExtensionField_5753P18, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P18_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P18 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P18_tags_73, + sizeof(asn_DEF_ProtocolExtensionField_5753P18_tags_73) + /sizeof(asn_DEF_ProtocolExtensionField_5753P18_tags_73[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P18_tags_73, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P18_tags_73) + /sizeof(asn_DEF_ProtocolExtensionField_5753P18_tags_73[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P18_73, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P18_specs_73 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P19_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P19, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_77, + &asn_PER_memb_id_constr_78, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P19, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_77, + &asn_PER_memb_criticality_constr_79, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P19, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_77, + &asn_PER_memb_extensionValue_constr_80, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P19_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P19_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P19_specs_77 = { + sizeof(struct ProtocolExtensionField_5753P19), + offsetof(struct ProtocolExtensionField_5753P19, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P19_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P19 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P19_tags_77, + sizeof(asn_DEF_ProtocolExtensionField_5753P19_tags_77) + /sizeof(asn_DEF_ProtocolExtensionField_5753P19_tags_77[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P19_tags_77, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P19_tags_77) + /sizeof(asn_DEF_ProtocolExtensionField_5753P19_tags_77[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P19_77, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P19_specs_77 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P20_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P20, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_81, + &asn_PER_memb_id_constr_82, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P20, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_81, + &asn_PER_memb_criticality_constr_83, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P20, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_81, + &asn_PER_memb_extensionValue_constr_84, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P20_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P20_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P20_specs_81 = { + sizeof(struct ProtocolExtensionField_5753P20), + offsetof(struct ProtocolExtensionField_5753P20, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P20_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P20 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P20_tags_81, + sizeof(asn_DEF_ProtocolExtensionField_5753P20_tags_81) + /sizeof(asn_DEF_ProtocolExtensionField_5753P20_tags_81[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P20_tags_81, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P20_tags_81) + /sizeof(asn_DEF_ProtocolExtensionField_5753P20_tags_81[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P20_81, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P20_specs_81 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P21_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P21, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_85, + &asn_PER_memb_id_constr_86, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P21, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_85, + &asn_PER_memb_criticality_constr_87, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P21, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_85, + &asn_PER_memb_extensionValue_constr_88, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P21_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P21_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P21_specs_85 = { + sizeof(struct ProtocolExtensionField_5753P21), + offsetof(struct ProtocolExtensionField_5753P21, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P21_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P21 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P21_tags_85, + sizeof(asn_DEF_ProtocolExtensionField_5753P21_tags_85) + /sizeof(asn_DEF_ProtocolExtensionField_5753P21_tags_85[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P21_tags_85, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P21_tags_85) + /sizeof(asn_DEF_ProtocolExtensionField_5753P21_tags_85[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P21_85, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P21_specs_85 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P22_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P22, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_89, + &asn_PER_memb_id_constr_90, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P22, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_89, + &asn_PER_memb_criticality_constr_91, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P22, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_89, + &asn_PER_memb_extensionValue_constr_92, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P22_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P22_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P22_specs_89 = { + sizeof(struct ProtocolExtensionField_5753P22), + offsetof(struct ProtocolExtensionField_5753P22, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P22_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P22 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P22_tags_89, + sizeof(asn_DEF_ProtocolExtensionField_5753P22_tags_89) + /sizeof(asn_DEF_ProtocolExtensionField_5753P22_tags_89[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P22_tags_89, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P22_tags_89) + /sizeof(asn_DEF_ProtocolExtensionField_5753P22_tags_89[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P22_89, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P22_specs_89 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P23_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P23, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_93, + &asn_PER_memb_id_constr_94, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P23, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_93, + &asn_PER_memb_criticality_constr_95, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P23, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_93, + &asn_PER_memb_extensionValue_constr_96, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P23_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P23_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P23_specs_93 = { + sizeof(struct ProtocolExtensionField_5753P23), + offsetof(struct ProtocolExtensionField_5753P23, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P23_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P23 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P23_tags_93, + sizeof(asn_DEF_ProtocolExtensionField_5753P23_tags_93) + /sizeof(asn_DEF_ProtocolExtensionField_5753P23_tags_93[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P23_tags_93, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P23_tags_93) + /sizeof(asn_DEF_ProtocolExtensionField_5753P23_tags_93[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P23_93, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P23_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P24_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P24, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_97, + &asn_PER_memb_id_constr_98, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P24, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_97, + &asn_PER_memb_criticality_constr_99, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P24, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_97, + &asn_PER_memb_extensionValue_constr_100, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P24_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P24_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P24_specs_97 = { + sizeof(struct ProtocolExtensionField_5753P24), + offsetof(struct ProtocolExtensionField_5753P24, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P24_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P24 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P24_tags_97, + sizeof(asn_DEF_ProtocolExtensionField_5753P24_tags_97) + /sizeof(asn_DEF_ProtocolExtensionField_5753P24_tags_97[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P24_tags_97, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P24_tags_97) + /sizeof(asn_DEF_ProtocolExtensionField_5753P24_tags_97[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P24_97, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P24_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P25_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P25, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_101, + &asn_PER_memb_id_constr_102, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P25, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_101, + &asn_PER_memb_criticality_constr_103, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P25, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_101, + &asn_PER_memb_extensionValue_constr_104, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P25_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P25_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P25_specs_101 = { + sizeof(struct ProtocolExtensionField_5753P25), + offsetof(struct ProtocolExtensionField_5753P25, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P25_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P25 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P25_tags_101, + sizeof(asn_DEF_ProtocolExtensionField_5753P25_tags_101) + /sizeof(asn_DEF_ProtocolExtensionField_5753P25_tags_101[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P25_tags_101, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P25_tags_101) + /sizeof(asn_DEF_ProtocolExtensionField_5753P25_tags_101[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P25_101, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P25_specs_101 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P26_105[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P26, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_105, + &asn_PER_memb_id_constr_106, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P26, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_105, + &asn_PER_memb_criticality_constr_107, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P26, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_105, + &asn_PER_memb_extensionValue_constr_108, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P26_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P26_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P26_specs_105 = { + sizeof(struct ProtocolExtensionField_5753P26), + offsetof(struct ProtocolExtensionField_5753P26, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P26_tag2el_105, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P26 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P26_tags_105, + sizeof(asn_DEF_ProtocolExtensionField_5753P26_tags_105) + /sizeof(asn_DEF_ProtocolExtensionField_5753P26_tags_105[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P26_tags_105, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P26_tags_105) + /sizeof(asn_DEF_ProtocolExtensionField_5753P26_tags_105[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P26_105, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P26_specs_105 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P27_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P27, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_109, + &asn_PER_memb_id_constr_110, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P27, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_109, + &asn_PER_memb_criticality_constr_111, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P27, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_109, + &asn_PER_memb_extensionValue_constr_112, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P27_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P27_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P27_specs_109 = { + sizeof(struct ProtocolExtensionField_5753P27), + offsetof(struct ProtocolExtensionField_5753P27, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P27_tag2el_109, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P27 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P27_tags_109, + sizeof(asn_DEF_ProtocolExtensionField_5753P27_tags_109) + /sizeof(asn_DEF_ProtocolExtensionField_5753P27_tags_109[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P27_tags_109, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P27_tags_109) + /sizeof(asn_DEF_ProtocolExtensionField_5753P27_tags_109[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P27_109, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P27_specs_109 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P28_113[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P28, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_113, + &asn_PER_memb_id_constr_114, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P28, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_113, + &asn_PER_memb_criticality_constr_115, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P28, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_113, + &asn_PER_memb_extensionValue_constr_116, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P28_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P28_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P28_specs_113 = { + sizeof(struct ProtocolExtensionField_5753P28), + offsetof(struct ProtocolExtensionField_5753P28, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P28_tag2el_113, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P28 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P28_tags_113, + sizeof(asn_DEF_ProtocolExtensionField_5753P28_tags_113) + /sizeof(asn_DEF_ProtocolExtensionField_5753P28_tags_113[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P28_tags_113, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P28_tags_113) + /sizeof(asn_DEF_ProtocolExtensionField_5753P28_tags_113[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P28_113, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P28_specs_113 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P29_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P29, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_117, + &asn_PER_memb_id_constr_118, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P29, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_117, + &asn_PER_memb_criticality_constr_119, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P29, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_117, + &asn_PER_memb_extensionValue_constr_120, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P29_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P29_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P29_specs_117 = { + sizeof(struct ProtocolExtensionField_5753P29), + offsetof(struct ProtocolExtensionField_5753P29, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P29_tag2el_117, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P29 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P29_tags_117, + sizeof(asn_DEF_ProtocolExtensionField_5753P29_tags_117) + /sizeof(asn_DEF_ProtocolExtensionField_5753P29_tags_117[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P29_tags_117, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P29_tags_117) + /sizeof(asn_DEF_ProtocolExtensionField_5753P29_tags_117[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P29_117, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P29_specs_117 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P30_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P30, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_121, + &asn_PER_memb_id_constr_122, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P30, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_121, + &asn_PER_memb_criticality_constr_123, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P30, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_121, + &asn_PER_memb_extensionValue_constr_124, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P30_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P30_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P30_specs_121 = { + sizeof(struct ProtocolExtensionField_5753P30), + offsetof(struct ProtocolExtensionField_5753P30, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P30_tag2el_121, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P30 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P30_tags_121, + sizeof(asn_DEF_ProtocolExtensionField_5753P30_tags_121) + /sizeof(asn_DEF_ProtocolExtensionField_5753P30_tags_121[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P30_tags_121, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P30_tags_121) + /sizeof(asn_DEF_ProtocolExtensionField_5753P30_tags_121[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P30_121, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P30_specs_121 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P31_125[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P31, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_125, + &asn_PER_memb_id_constr_126, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P31, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_125, + &asn_PER_memb_criticality_constr_127, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P31, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_125, + &asn_PER_memb_extensionValue_constr_128, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P31_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P31_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P31_specs_125 = { + sizeof(struct ProtocolExtensionField_5753P31), + offsetof(struct ProtocolExtensionField_5753P31, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P31_tag2el_125, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P31 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P31_tags_125, + sizeof(asn_DEF_ProtocolExtensionField_5753P31_tags_125) + /sizeof(asn_DEF_ProtocolExtensionField_5753P31_tags_125[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P31_tags_125, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P31_tags_125) + /sizeof(asn_DEF_ProtocolExtensionField_5753P31_tags_125[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P31_125, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P31_specs_125 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P32_129[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P32, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_129, + &asn_PER_memb_id_constr_130, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P32, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_129, + &asn_PER_memb_criticality_constr_131, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P32, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_129, + &asn_PER_memb_extensionValue_constr_132, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P32_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P32_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P32_specs_129 = { + sizeof(struct ProtocolExtensionField_5753P32), + offsetof(struct ProtocolExtensionField_5753P32, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P32_tag2el_129, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P32 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P32_tags_129, + sizeof(asn_DEF_ProtocolExtensionField_5753P32_tags_129) + /sizeof(asn_DEF_ProtocolExtensionField_5753P32_tags_129[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P32_tags_129, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P32_tags_129) + /sizeof(asn_DEF_ProtocolExtensionField_5753P32_tags_129[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P32_129, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P32_specs_129 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P33_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P33, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_133, + &asn_PER_memb_id_constr_134, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P33, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_133, + &asn_PER_memb_criticality_constr_135, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P33, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_133, + &asn_PER_memb_extensionValue_constr_136, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P33_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P33_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P33_specs_133 = { + sizeof(struct ProtocolExtensionField_5753P33), + offsetof(struct ProtocolExtensionField_5753P33, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P33_tag2el_133, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P33 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P33_tags_133, + sizeof(asn_DEF_ProtocolExtensionField_5753P33_tags_133) + /sizeof(asn_DEF_ProtocolExtensionField_5753P33_tags_133[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P33_tags_133, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P33_tags_133) + /sizeof(asn_DEF_ProtocolExtensionField_5753P33_tags_133[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P33_133, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P33_specs_133 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P34_137[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P34, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_137, + &asn_PER_memb_id_constr_138, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P34, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_137, + &asn_PER_memb_criticality_constr_139, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P34, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_137, + &asn_PER_memb_extensionValue_constr_140, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P34_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P34_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P34_specs_137 = { + sizeof(struct ProtocolExtensionField_5753P34), + offsetof(struct ProtocolExtensionField_5753P34, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P34_tag2el_137, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P34 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P34_tags_137, + sizeof(asn_DEF_ProtocolExtensionField_5753P34_tags_137) + /sizeof(asn_DEF_ProtocolExtensionField_5753P34_tags_137[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P34_tags_137, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P34_tags_137) + /sizeof(asn_DEF_ProtocolExtensionField_5753P34_tags_137[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P34_137, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P34_specs_137 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P35_141[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P35, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_141, + &asn_PER_memb_id_constr_142, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P35, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_141, + &asn_PER_memb_criticality_constr_143, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P35, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_141, + &asn_PER_memb_extensionValue_constr_144, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P35_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P35_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P35_specs_141 = { + sizeof(struct ProtocolExtensionField_5753P35), + offsetof(struct ProtocolExtensionField_5753P35, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P35_tag2el_141, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P35 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P35_tags_141, + sizeof(asn_DEF_ProtocolExtensionField_5753P35_tags_141) + /sizeof(asn_DEF_ProtocolExtensionField_5753P35_tags_141[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P35_tags_141, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P35_tags_141) + /sizeof(asn_DEF_ProtocolExtensionField_5753P35_tags_141[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P35_141, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P35_specs_141 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P36_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P36, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_145, + &asn_PER_memb_id_constr_146, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P36, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_145, + &asn_PER_memb_criticality_constr_147, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P36, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_145, + &asn_PER_memb_extensionValue_constr_148, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P36_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P36_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P36_specs_145 = { + sizeof(struct ProtocolExtensionField_5753P36), + offsetof(struct ProtocolExtensionField_5753P36, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P36_tag2el_145, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P36 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P36_tags_145, + sizeof(asn_DEF_ProtocolExtensionField_5753P36_tags_145) + /sizeof(asn_DEF_ProtocolExtensionField_5753P36_tags_145[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P36_tags_145, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P36_tags_145) + /sizeof(asn_DEF_ProtocolExtensionField_5753P36_tags_145[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P36_145, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P36_specs_145 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P37_149[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P37, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_149, + &asn_PER_memb_id_constr_150, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P37, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_149, + &asn_PER_memb_criticality_constr_151, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P37, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_149, + &asn_PER_memb_extensionValue_constr_152, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P37_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P37_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P37_specs_149 = { + sizeof(struct ProtocolExtensionField_5753P37), + offsetof(struct ProtocolExtensionField_5753P37, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P37_tag2el_149, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P37 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P37_tags_149, + sizeof(asn_DEF_ProtocolExtensionField_5753P37_tags_149) + /sizeof(asn_DEF_ProtocolExtensionField_5753P37_tags_149[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P37_tags_149, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P37_tags_149) + /sizeof(asn_DEF_ProtocolExtensionField_5753P37_tags_149[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P37_149, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P37_specs_149 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P38_153[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P38, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_153, + &asn_PER_memb_id_constr_154, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P38, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_153, + &asn_PER_memb_criticality_constr_155, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P38, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_153, + &asn_PER_memb_extensionValue_constr_156, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P38_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P38_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P38_specs_153 = { + sizeof(struct ProtocolExtensionField_5753P38), + offsetof(struct ProtocolExtensionField_5753P38, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P38_tag2el_153, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P38 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P38_tags_153, + sizeof(asn_DEF_ProtocolExtensionField_5753P38_tags_153) + /sizeof(asn_DEF_ProtocolExtensionField_5753P38_tags_153[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P38_tags_153, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P38_tags_153) + /sizeof(asn_DEF_ProtocolExtensionField_5753P38_tags_153[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P38_153, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P38_specs_153 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P39_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P39, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_157, + &asn_PER_memb_id_constr_158, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P39, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_157, + &asn_PER_memb_criticality_constr_159, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P39, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_157, + &asn_PER_memb_extensionValue_constr_160, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P39_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P39_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P39_specs_157 = { + sizeof(struct ProtocolExtensionField_5753P39), + offsetof(struct ProtocolExtensionField_5753P39, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P39_tag2el_157, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P39 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P39_tags_157, + sizeof(asn_DEF_ProtocolExtensionField_5753P39_tags_157) + /sizeof(asn_DEF_ProtocolExtensionField_5753P39_tags_157[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P39_tags_157, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P39_tags_157) + /sizeof(asn_DEF_ProtocolExtensionField_5753P39_tags_157[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P39_157, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P39_specs_157 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P40_161[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P40, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_161, + &asn_PER_memb_id_constr_162, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P40, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_161, + &asn_PER_memb_criticality_constr_163, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P40, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_161, + &asn_PER_memb_extensionValue_constr_164, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P40_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P40_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P40_specs_161 = { + sizeof(struct ProtocolExtensionField_5753P40), + offsetof(struct ProtocolExtensionField_5753P40, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P40_tag2el_161, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P40 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P40_tags_161, + sizeof(asn_DEF_ProtocolExtensionField_5753P40_tags_161) + /sizeof(asn_DEF_ProtocolExtensionField_5753P40_tags_161[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P40_tags_161, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P40_tags_161) + /sizeof(asn_DEF_ProtocolExtensionField_5753P40_tags_161[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P40_161, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P40_specs_161 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P41_165[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P41, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_165, + &asn_PER_memb_id_constr_166, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P41, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_165, + &asn_PER_memb_criticality_constr_167, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P41, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_165, + &asn_PER_memb_extensionValue_constr_168, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P41_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P41_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P41_specs_165 = { + sizeof(struct ProtocolExtensionField_5753P41), + offsetof(struct ProtocolExtensionField_5753P41, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P41_tag2el_165, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P41 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P41_tags_165, + sizeof(asn_DEF_ProtocolExtensionField_5753P41_tags_165) + /sizeof(asn_DEF_ProtocolExtensionField_5753P41_tags_165[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P41_tags_165, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P41_tags_165) + /sizeof(asn_DEF_ProtocolExtensionField_5753P41_tags_165[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P41_165, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P41_specs_165 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P42_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P42, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_169, + &asn_PER_memb_id_constr_170, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P42, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_169, + &asn_PER_memb_criticality_constr_171, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P42, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_169, + &asn_PER_memb_extensionValue_constr_172, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P42_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P42_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P42_specs_169 = { + sizeof(struct ProtocolExtensionField_5753P42), + offsetof(struct ProtocolExtensionField_5753P42, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P42_tag2el_169, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P42 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P42_tags_169, + sizeof(asn_DEF_ProtocolExtensionField_5753P42_tags_169) + /sizeof(asn_DEF_ProtocolExtensionField_5753P42_tags_169[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P42_tags_169, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P42_tags_169) + /sizeof(asn_DEF_ProtocolExtensionField_5753P42_tags_169[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P42_169, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P42_specs_169 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P43_173[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P43, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_173, + &asn_PER_memb_id_constr_174, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P43, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_173, + &asn_PER_memb_criticality_constr_175, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P43, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_173, + &asn_PER_memb_extensionValue_constr_176, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P43_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P43_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P43_specs_173 = { + sizeof(struct ProtocolExtensionField_5753P43), + offsetof(struct ProtocolExtensionField_5753P43, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P43_tag2el_173, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P43 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P43_tags_173, + sizeof(asn_DEF_ProtocolExtensionField_5753P43_tags_173) + /sizeof(asn_DEF_ProtocolExtensionField_5753P43_tags_173[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P43_tags_173, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P43_tags_173) + /sizeof(asn_DEF_ProtocolExtensionField_5753P43_tags_173[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P43_173, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P43_specs_173 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P44_177[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P44, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_177, + &asn_PER_memb_id_constr_178, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P44, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_177, + &asn_PER_memb_criticality_constr_179, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P44, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_177, + &asn_PER_memb_extensionValue_constr_180, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P44_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P44_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P44_specs_177 = { + sizeof(struct ProtocolExtensionField_5753P44), + offsetof(struct ProtocolExtensionField_5753P44, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P44_tag2el_177, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P44 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P44_tags_177, + sizeof(asn_DEF_ProtocolExtensionField_5753P44_tags_177) + /sizeof(asn_DEF_ProtocolExtensionField_5753P44_tags_177[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P44_tags_177, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P44_tags_177) + /sizeof(asn_DEF_ProtocolExtensionField_5753P44_tags_177[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P44_177, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P44_specs_177 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P45_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P45, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_181, + &asn_PER_memb_id_constr_182, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P45, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_181, + &asn_PER_memb_criticality_constr_183, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P45, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_181, + &asn_PER_memb_extensionValue_constr_184, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P45_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P45_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P45_specs_181 = { + sizeof(struct ProtocolExtensionField_5753P45), + offsetof(struct ProtocolExtensionField_5753P45, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P45_tag2el_181, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P45 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P45_tags_181, + sizeof(asn_DEF_ProtocolExtensionField_5753P45_tags_181) + /sizeof(asn_DEF_ProtocolExtensionField_5753P45_tags_181[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P45_tags_181, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P45_tags_181) + /sizeof(asn_DEF_ProtocolExtensionField_5753P45_tags_181[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P45_181, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P45_specs_181 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P46_185[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P46, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_185, + &asn_PER_memb_id_constr_186, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P46, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_185, + &asn_PER_memb_criticality_constr_187, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P46, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_185, + &asn_PER_memb_extensionValue_constr_188, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P46_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P46_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P46_specs_185 = { + sizeof(struct ProtocolExtensionField_5753P46), + offsetof(struct ProtocolExtensionField_5753P46, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P46_tag2el_185, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P46 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P46_tags_185, + sizeof(asn_DEF_ProtocolExtensionField_5753P46_tags_185) + /sizeof(asn_DEF_ProtocolExtensionField_5753P46_tags_185[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P46_tags_185, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P46_tags_185) + /sizeof(asn_DEF_ProtocolExtensionField_5753P46_tags_185[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P46_185, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P46_specs_185 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P47_189[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P47, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_189, + &asn_PER_memb_id_constr_190, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P47, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_189, + &asn_PER_memb_criticality_constr_191, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P47, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_189, + &asn_PER_memb_extensionValue_constr_192, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P47_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P47_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P47_specs_189 = { + sizeof(struct ProtocolExtensionField_5753P47), + offsetof(struct ProtocolExtensionField_5753P47, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P47_tag2el_189, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P47 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P47_tags_189, + sizeof(asn_DEF_ProtocolExtensionField_5753P47_tags_189) + /sizeof(asn_DEF_ProtocolExtensionField_5753P47_tags_189[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P47_tags_189, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P47_tags_189) + /sizeof(asn_DEF_ProtocolExtensionField_5753P47_tags_189[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P47_189, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P47_specs_189 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P48_193[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P48, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_193, + &asn_PER_memb_id_constr_194, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P48, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_193, + &asn_PER_memb_criticality_constr_195, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P48, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_193, + &asn_PER_memb_extensionValue_constr_196, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P48_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P48_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P48_specs_193 = { + sizeof(struct ProtocolExtensionField_5753P48), + offsetof(struct ProtocolExtensionField_5753P48, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P48_tag2el_193, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P48 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P48_tags_193, + sizeof(asn_DEF_ProtocolExtensionField_5753P48_tags_193) + /sizeof(asn_DEF_ProtocolExtensionField_5753P48_tags_193[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P48_tags_193, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P48_tags_193) + /sizeof(asn_DEF_ProtocolExtensionField_5753P48_tags_193[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P48_193, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P48_specs_193 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P49_197[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P49, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_197, + &asn_PER_memb_id_constr_198, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P49, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_197, + &asn_PER_memb_criticality_constr_199, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P49, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_197, + &asn_PER_memb_extensionValue_constr_200, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P49_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P49_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P49_specs_197 = { + sizeof(struct ProtocolExtensionField_5753P49), + offsetof(struct ProtocolExtensionField_5753P49, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P49_tag2el_197, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P49 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P49_tags_197, + sizeof(asn_DEF_ProtocolExtensionField_5753P49_tags_197) + /sizeof(asn_DEF_ProtocolExtensionField_5753P49_tags_197[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P49_tags_197, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P49_tags_197) + /sizeof(asn_DEF_ProtocolExtensionField_5753P49_tags_197[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P49_197, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P49_specs_197 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P50_201[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P50, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_201, + &asn_PER_memb_id_constr_202, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P50, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_201, + &asn_PER_memb_criticality_constr_203, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P50, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_201, + &asn_PER_memb_extensionValue_constr_204, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P50_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P50_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P50_specs_201 = { + sizeof(struct ProtocolExtensionField_5753P50), + offsetof(struct ProtocolExtensionField_5753P50, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P50_tag2el_201, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P50 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P50_tags_201, + sizeof(asn_DEF_ProtocolExtensionField_5753P50_tags_201) + /sizeof(asn_DEF_ProtocolExtensionField_5753P50_tags_201[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P50_tags_201, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P50_tags_201) + /sizeof(asn_DEF_ProtocolExtensionField_5753P50_tags_201[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P50_201, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P50_specs_201 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P51_205[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P51, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_205, + &asn_PER_memb_id_constr_206, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P51, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_205, + &asn_PER_memb_criticality_constr_207, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P51, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_205, + &asn_PER_memb_extensionValue_constr_208, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P51_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P51_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P51_specs_205 = { + sizeof(struct ProtocolExtensionField_5753P51), + offsetof(struct ProtocolExtensionField_5753P51, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P51_tag2el_205, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P51 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P51_tags_205, + sizeof(asn_DEF_ProtocolExtensionField_5753P51_tags_205) + /sizeof(asn_DEF_ProtocolExtensionField_5753P51_tags_205[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P51_tags_205, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P51_tags_205) + /sizeof(asn_DEF_ProtocolExtensionField_5753P51_tags_205[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P51_205, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P51_specs_205 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P52_209[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P52, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_209, + &asn_PER_memb_id_constr_210, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P52, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_209, + &asn_PER_memb_criticality_constr_211, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P52, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_209, + &asn_PER_memb_extensionValue_constr_212, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P52_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P52_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P52_specs_209 = { + sizeof(struct ProtocolExtensionField_5753P52), + offsetof(struct ProtocolExtensionField_5753P52, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P52_tag2el_209, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P52 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P52_tags_209, + sizeof(asn_DEF_ProtocolExtensionField_5753P52_tags_209) + /sizeof(asn_DEF_ProtocolExtensionField_5753P52_tags_209[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P52_tags_209, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P52_tags_209) + /sizeof(asn_DEF_ProtocolExtensionField_5753P52_tags_209[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P52_209, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P52_specs_209 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P53_213[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P53, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_213, + &asn_PER_memb_id_constr_214, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P53, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_213, + &asn_PER_memb_criticality_constr_215, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P53, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_213, + &asn_PER_memb_extensionValue_constr_216, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P53_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P53_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P53_specs_213 = { + sizeof(struct ProtocolExtensionField_5753P53), + offsetof(struct ProtocolExtensionField_5753P53, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P53_tag2el_213, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P53 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P53_tags_213, + sizeof(asn_DEF_ProtocolExtensionField_5753P53_tags_213) + /sizeof(asn_DEF_ProtocolExtensionField_5753P53_tags_213[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P53_tags_213, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P53_tags_213) + /sizeof(asn_DEF_ProtocolExtensionField_5753P53_tags_213[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P53_213, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P53_specs_213 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P54_217[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P54, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_217, + &asn_PER_memb_id_constr_218, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P54, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_217, + &asn_PER_memb_criticality_constr_219, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P54, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_217, + &asn_PER_memb_extensionValue_constr_220, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P54_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P54_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P54_specs_217 = { + sizeof(struct ProtocolExtensionField_5753P54), + offsetof(struct ProtocolExtensionField_5753P54, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P54_tag2el_217, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P54 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P54_tags_217, + sizeof(asn_DEF_ProtocolExtensionField_5753P54_tags_217) + /sizeof(asn_DEF_ProtocolExtensionField_5753P54_tags_217[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P54_tags_217, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P54_tags_217) + /sizeof(asn_DEF_ProtocolExtensionField_5753P54_tags_217[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P54_217, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P54_specs_217 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P55_221[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P55, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_221, + &asn_PER_memb_id_constr_222, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P55, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_221, + &asn_PER_memb_criticality_constr_223, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P55, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_221, + &asn_PER_memb_extensionValue_constr_224, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P55_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P55_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P55_specs_221 = { + sizeof(struct ProtocolExtensionField_5753P55), + offsetof(struct ProtocolExtensionField_5753P55, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P55_tag2el_221, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P55 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P55_tags_221, + sizeof(asn_DEF_ProtocolExtensionField_5753P55_tags_221) + /sizeof(asn_DEF_ProtocolExtensionField_5753P55_tags_221[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P55_tags_221, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P55_tags_221) + /sizeof(asn_DEF_ProtocolExtensionField_5753P55_tags_221[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P55_221, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P55_specs_221 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P56_225[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P56, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_225, + &asn_PER_memb_id_constr_226, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P56, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_225, + &asn_PER_memb_criticality_constr_227, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P56, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_225, + &asn_PER_memb_extensionValue_constr_228, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P56_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P56_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P56_specs_225 = { + sizeof(struct ProtocolExtensionField_5753P56), + offsetof(struct ProtocolExtensionField_5753P56, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P56_tag2el_225, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P56 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P56_tags_225, + sizeof(asn_DEF_ProtocolExtensionField_5753P56_tags_225) + /sizeof(asn_DEF_ProtocolExtensionField_5753P56_tags_225[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P56_tags_225, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P56_tags_225) + /sizeof(asn_DEF_ProtocolExtensionField_5753P56_tags_225[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P56_225, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P56_specs_225 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P57_229[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P57, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_229, + &asn_PER_memb_id_constr_230, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P57, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_229, + &asn_PER_memb_criticality_constr_231, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P57, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_229, + &asn_PER_memb_extensionValue_constr_232, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P57_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P57_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P57_specs_229 = { + sizeof(struct ProtocolExtensionField_5753P57), + offsetof(struct ProtocolExtensionField_5753P57, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P57_tag2el_229, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P57 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P57_tags_229, + sizeof(asn_DEF_ProtocolExtensionField_5753P57_tags_229) + /sizeof(asn_DEF_ProtocolExtensionField_5753P57_tags_229[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P57_tags_229, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P57_tags_229) + /sizeof(asn_DEF_ProtocolExtensionField_5753P57_tags_229[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P57_229, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P57_specs_229 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P58_233[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P58, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_233, + &asn_PER_memb_id_constr_234, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P58, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_233, + &asn_PER_memb_criticality_constr_235, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P58, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_233, + &asn_PER_memb_extensionValue_constr_236, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P58_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P58_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P58_specs_233 = { + sizeof(struct ProtocolExtensionField_5753P58), + offsetof(struct ProtocolExtensionField_5753P58, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P58_tag2el_233, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P58 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P58_tags_233, + sizeof(asn_DEF_ProtocolExtensionField_5753P58_tags_233) + /sizeof(asn_DEF_ProtocolExtensionField_5753P58_tags_233[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P58_tags_233, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P58_tags_233) + /sizeof(asn_DEF_ProtocolExtensionField_5753P58_tags_233[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P58_233, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P58_specs_233 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P59_237[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P59, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_237, + &asn_PER_memb_id_constr_238, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P59, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_237, + &asn_PER_memb_criticality_constr_239, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P59, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_237, + &asn_PER_memb_extensionValue_constr_240, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P59_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P59_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P59_specs_237 = { + sizeof(struct ProtocolExtensionField_5753P59), + offsetof(struct ProtocolExtensionField_5753P59, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P59_tag2el_237, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P59 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P59_tags_237, + sizeof(asn_DEF_ProtocolExtensionField_5753P59_tags_237) + /sizeof(asn_DEF_ProtocolExtensionField_5753P59_tags_237[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P59_tags_237, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P59_tags_237) + /sizeof(asn_DEF_ProtocolExtensionField_5753P59_tags_237[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P59_237, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P59_specs_237 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P60_241[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P60, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_241, + &asn_PER_memb_id_constr_242, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P60, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_241, + &asn_PER_memb_criticality_constr_243, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P60, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_241, + &asn_PER_memb_extensionValue_constr_244, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P60_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P60_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P60_specs_241 = { + sizeof(struct ProtocolExtensionField_5753P60), + offsetof(struct ProtocolExtensionField_5753P60, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P60_tag2el_241, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P60 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P60_tags_241, + sizeof(asn_DEF_ProtocolExtensionField_5753P60_tags_241) + /sizeof(asn_DEF_ProtocolExtensionField_5753P60_tags_241[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P60_tags_241, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P60_tags_241) + /sizeof(asn_DEF_ProtocolExtensionField_5753P60_tags_241[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P60_241, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P60_specs_241 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P61_245[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P61, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_245, + &asn_PER_memb_id_constr_246, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P61, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_245, + &asn_PER_memb_criticality_constr_247, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P61, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_245, + &asn_PER_memb_extensionValue_constr_248, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P61_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P61_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P61_specs_245 = { + sizeof(struct ProtocolExtensionField_5753P61), + offsetof(struct ProtocolExtensionField_5753P61, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P61_tag2el_245, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P61 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P61_tags_245, + sizeof(asn_DEF_ProtocolExtensionField_5753P61_tags_245) + /sizeof(asn_DEF_ProtocolExtensionField_5753P61_tags_245[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P61_tags_245, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P61_tags_245) + /sizeof(asn_DEF_ProtocolExtensionField_5753P61_tags_245[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P61_245, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P61_specs_245 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P62_249[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P62, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_249, + &asn_PER_memb_id_constr_250, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P62, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_249, + &asn_PER_memb_criticality_constr_251, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P62, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_249, + &asn_PER_memb_extensionValue_constr_252, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P62_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P62_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P62_specs_249 = { + sizeof(struct ProtocolExtensionField_5753P62), + offsetof(struct ProtocolExtensionField_5753P62, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P62_tag2el_249, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P62 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P62_tags_249, + sizeof(asn_DEF_ProtocolExtensionField_5753P62_tags_249) + /sizeof(asn_DEF_ProtocolExtensionField_5753P62_tags_249[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P62_tags_249, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P62_tags_249) + /sizeof(asn_DEF_ProtocolExtensionField_5753P62_tags_249[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P62_249, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P62_specs_249 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P63_253[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P63, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_253, + &asn_PER_memb_id_constr_254, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P63, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_253, + &asn_PER_memb_criticality_constr_255, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P63, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_253, + &asn_PER_memb_extensionValue_constr_256, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P63_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P63_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P63_specs_253 = { + sizeof(struct ProtocolExtensionField_5753P63), + offsetof(struct ProtocolExtensionField_5753P63, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P63_tag2el_253, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P63 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P63_tags_253, + sizeof(asn_DEF_ProtocolExtensionField_5753P63_tags_253) + /sizeof(asn_DEF_ProtocolExtensionField_5753P63_tags_253[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P63_tags_253, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P63_tags_253) + /sizeof(asn_DEF_ProtocolExtensionField_5753P63_tags_253[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P63_253, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P63_specs_253 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P64_257[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P64, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_257, + &asn_PER_memb_id_constr_258, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P64, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_257, + &asn_PER_memb_criticality_constr_259, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P64, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_257, + &asn_PER_memb_extensionValue_constr_260, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P64_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P64_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P64_specs_257 = { + sizeof(struct ProtocolExtensionField_5753P64), + offsetof(struct ProtocolExtensionField_5753P64, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P64_tag2el_257, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P64 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P64_tags_257, + sizeof(asn_DEF_ProtocolExtensionField_5753P64_tags_257) + /sizeof(asn_DEF_ProtocolExtensionField_5753P64_tags_257[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P64_tags_257, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P64_tags_257) + /sizeof(asn_DEF_ProtocolExtensionField_5753P64_tags_257[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P64_257, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P64_specs_257 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P65_261[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P65, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_261, + &asn_PER_memb_id_constr_262, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P65, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_261, + &asn_PER_memb_criticality_constr_263, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P65, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_261, + &asn_PER_memb_extensionValue_constr_264, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P65_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P65_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P65_specs_261 = { + sizeof(struct ProtocolExtensionField_5753P65), + offsetof(struct ProtocolExtensionField_5753P65, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P65_tag2el_261, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P65 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P65_tags_261, + sizeof(asn_DEF_ProtocolExtensionField_5753P65_tags_261) + /sizeof(asn_DEF_ProtocolExtensionField_5753P65_tags_261[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P65_tags_261, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P65_tags_261) + /sizeof(asn_DEF_ProtocolExtensionField_5753P65_tags_261[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P65_261, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P65_specs_261 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P66_265[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P66, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_265, + &asn_PER_memb_id_constr_266, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P66, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_265, + &asn_PER_memb_criticality_constr_267, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P66, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_265, + &asn_PER_memb_extensionValue_constr_268, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P66_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P66_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P66_specs_265 = { + sizeof(struct ProtocolExtensionField_5753P66), + offsetof(struct ProtocolExtensionField_5753P66, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P66_tag2el_265, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P66 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P66_tags_265, + sizeof(asn_DEF_ProtocolExtensionField_5753P66_tags_265) + /sizeof(asn_DEF_ProtocolExtensionField_5753P66_tags_265[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P66_tags_265, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P66_tags_265) + /sizeof(asn_DEF_ProtocolExtensionField_5753P66_tags_265[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P66_265, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P66_specs_265 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P67_269[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P67, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_269, + &asn_PER_memb_id_constr_270, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P67, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_269, + &asn_PER_memb_criticality_constr_271, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P67, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_269, + &asn_PER_memb_extensionValue_constr_272, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P67_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P67_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P67_specs_269 = { + sizeof(struct ProtocolExtensionField_5753P67), + offsetof(struct ProtocolExtensionField_5753P67, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P67_tag2el_269, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P67 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P67_tags_269, + sizeof(asn_DEF_ProtocolExtensionField_5753P67_tags_269) + /sizeof(asn_DEF_ProtocolExtensionField_5753P67_tags_269[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P67_tags_269, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P67_tags_269) + /sizeof(asn_DEF_ProtocolExtensionField_5753P67_tags_269[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P67_269, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P67_specs_269 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P68_273[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P68, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_273, + &asn_PER_memb_id_constr_274, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P68, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_273, + &asn_PER_memb_criticality_constr_275, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P68, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_273, + &asn_PER_memb_extensionValue_constr_276, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P68_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P68_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P68_specs_273 = { + sizeof(struct ProtocolExtensionField_5753P68), + offsetof(struct ProtocolExtensionField_5753P68, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P68_tag2el_273, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P68 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P68_tags_273, + sizeof(asn_DEF_ProtocolExtensionField_5753P68_tags_273) + /sizeof(asn_DEF_ProtocolExtensionField_5753P68_tags_273[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P68_tags_273, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P68_tags_273) + /sizeof(asn_DEF_ProtocolExtensionField_5753P68_tags_273[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P68_273, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P68_specs_273 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P69_277[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P69, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_277, + &asn_PER_memb_id_constr_278, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P69, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_277, + &asn_PER_memb_criticality_constr_279, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P69, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_277, + &asn_PER_memb_extensionValue_constr_280, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P69_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P69_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P69_specs_277 = { + sizeof(struct ProtocolExtensionField_5753P69), + offsetof(struct ProtocolExtensionField_5753P69, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P69_tag2el_277, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P69 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P69_tags_277, + sizeof(asn_DEF_ProtocolExtensionField_5753P69_tags_277) + /sizeof(asn_DEF_ProtocolExtensionField_5753P69_tags_277[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P69_tags_277, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P69_tags_277) + /sizeof(asn_DEF_ProtocolExtensionField_5753P69_tags_277[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P69_277, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P69_specs_277 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P70_281[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P70, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_281, + &asn_PER_memb_id_constr_282, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P70, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_281, + &asn_PER_memb_criticality_constr_283, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P70, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_281, + &asn_PER_memb_extensionValue_constr_284, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P70_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P70_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P70_specs_281 = { + sizeof(struct ProtocolExtensionField_5753P70), + offsetof(struct ProtocolExtensionField_5753P70, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P70_tag2el_281, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P70 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P70_tags_281, + sizeof(asn_DEF_ProtocolExtensionField_5753P70_tags_281) + /sizeof(asn_DEF_ProtocolExtensionField_5753P70_tags_281[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P70_tags_281, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P70_tags_281) + /sizeof(asn_DEF_ProtocolExtensionField_5753P70_tags_281[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P70_281, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P70_specs_281 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P71_285[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P71, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_285, + &asn_PER_memb_id_constr_286, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P71, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_285, + &asn_PER_memb_criticality_constr_287, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P71, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_285, + &asn_PER_memb_extensionValue_constr_288, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P71_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P71_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P71_specs_285 = { + sizeof(struct ProtocolExtensionField_5753P71), + offsetof(struct ProtocolExtensionField_5753P71, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P71_tag2el_285, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P71 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P71_tags_285, + sizeof(asn_DEF_ProtocolExtensionField_5753P71_tags_285) + /sizeof(asn_DEF_ProtocolExtensionField_5753P71_tags_285[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P71_tags_285, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P71_tags_285) + /sizeof(asn_DEF_ProtocolExtensionField_5753P71_tags_285[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P71_285, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P71_specs_285 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P72_289[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P72, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_289, + &asn_PER_memb_id_constr_290, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P72, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_289, + &asn_PER_memb_criticality_constr_291, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P72, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_289, + &asn_PER_memb_extensionValue_constr_292, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P72_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P72_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P72_specs_289 = { + sizeof(struct ProtocolExtensionField_5753P72), + offsetof(struct ProtocolExtensionField_5753P72, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P72_tag2el_289, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P72 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P72_tags_289, + sizeof(asn_DEF_ProtocolExtensionField_5753P72_tags_289) + /sizeof(asn_DEF_ProtocolExtensionField_5753P72_tags_289[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P72_tags_289, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P72_tags_289) + /sizeof(asn_DEF_ProtocolExtensionField_5753P72_tags_289[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P72_289, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P72_specs_289 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P73_293[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P73, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_293, + &asn_PER_memb_id_constr_294, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P73, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_293, + &asn_PER_memb_criticality_constr_295, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P73, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_293, + &asn_PER_memb_extensionValue_constr_296, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P73_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P73_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P73_specs_293 = { + sizeof(struct ProtocolExtensionField_5753P73), + offsetof(struct ProtocolExtensionField_5753P73, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P73_tag2el_293, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P73 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P73_tags_293, + sizeof(asn_DEF_ProtocolExtensionField_5753P73_tags_293) + /sizeof(asn_DEF_ProtocolExtensionField_5753P73_tags_293[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P73_tags_293, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P73_tags_293) + /sizeof(asn_DEF_ProtocolExtensionField_5753P73_tags_293[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P73_293, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P73_specs_293 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P74_297[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P74, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_297, + &asn_PER_memb_id_constr_298, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P74, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_297, + &asn_PER_memb_criticality_constr_299, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P74, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_297, + &asn_PER_memb_extensionValue_constr_300, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P74_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P74_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P74_specs_297 = { + sizeof(struct ProtocolExtensionField_5753P74), + offsetof(struct ProtocolExtensionField_5753P74, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P74_tag2el_297, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P74 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P74_tags_297, + sizeof(asn_DEF_ProtocolExtensionField_5753P74_tags_297) + /sizeof(asn_DEF_ProtocolExtensionField_5753P74_tags_297[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P74_tags_297, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P74_tags_297) + /sizeof(asn_DEF_ProtocolExtensionField_5753P74_tags_297[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P74_297, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P74_specs_297 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ProtocolExtensionField_5753P75_301[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P75, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolExtensionID, + memb_id_constraint_301, + &asn_PER_memb_id_constr_302, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P75, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_301, + &asn_PER_memb_criticality_constr_303, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolExtensionField_5753P75, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_extensionValue_constraint_301, + &asn_PER_memb_extensionValue_constr_304, + 0, + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionField_5753P75_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolExtensionField_5753P75_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolExtensionField_5753P75_specs_301 = { + sizeof(struct ProtocolExtensionField_5753P75), + offsetof(struct ProtocolExtensionField_5753P75, _asn_ctx), + asn_MAP_ProtocolExtensionField_5753P75_tag2el_301, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P75 = { + "ProtocolExtensionField", + "ProtocolExtensionField", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolExtensionField_5753P75_tags_301, + sizeof(asn_DEF_ProtocolExtensionField_5753P75_tags_301) + /sizeof(asn_DEF_ProtocolExtensionField_5753P75_tags_301[0]), /* 1 */ + asn_DEF_ProtocolExtensionField_5753P75_tags_301, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionField_5753P75_tags_301) + /sizeof(asn_DEF_ProtocolExtensionField_5753P75_tags_301[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolExtensionField_5753P75_301, + 3, /* Elements count */ + &asn_SPC_ProtocolExtensionField_5753P75_specs_301 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/ProtocolExtensionField.h b/lib/asn/asn1c/ProtocolExtensionField.h new file mode 100644 index 0000000000..5805ab7a95 --- /dev/null +++ b/lib/asn/asn1c/ProtocolExtensionField.h @@ -0,0 +1,717 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolExtensionField_H_ +#define _ProtocolExtensionField_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ProtocolExtensionID.h" +#include "S1ap-Criticality.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolExtensionField */ +typedef struct ProtocolExtensionField_5753P0 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P0_t; +typedef struct ProtocolExtensionField_5753P1 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P1_t; +typedef struct ProtocolExtensionField_5753P2 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P2_t; +typedef struct ProtocolExtensionField_5753P3 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P3_t; +typedef struct ProtocolExtensionField_5753P4 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P4_t; +typedef struct ProtocolExtensionField_5753P5 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P5_t; +typedef struct ProtocolExtensionField_5753P6 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P6_t; +typedef struct ProtocolExtensionField_5753P7 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P7_t; +typedef struct ProtocolExtensionField_5753P8 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P8_t; +typedef struct ProtocolExtensionField_5753P9 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P9_t; +typedef struct ProtocolExtensionField_5753P10 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P10_t; +typedef struct ProtocolExtensionField_5753P11 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P11_t; +typedef struct ProtocolExtensionField_5753P12 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P12_t; +typedef struct ProtocolExtensionField_5753P13 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P13_t; +typedef struct ProtocolExtensionField_5753P14 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P14_t; +typedef struct ProtocolExtensionField_5753P15 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P15_t; +typedef struct ProtocolExtensionField_5753P16 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P16_t; +typedef struct ProtocolExtensionField_5753P17 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P17_t; +typedef struct ProtocolExtensionField_5753P18 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P18_t; +typedef struct ProtocolExtensionField_5753P19 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P19_t; +typedef struct ProtocolExtensionField_5753P20 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P20_t; +typedef struct ProtocolExtensionField_5753P21 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P21_t; +typedef struct ProtocolExtensionField_5753P22 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P22_t; +typedef struct ProtocolExtensionField_5753P23 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P23_t; +typedef struct ProtocolExtensionField_5753P24 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P24_t; +typedef struct ProtocolExtensionField_5753P25 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P25_t; +typedef struct ProtocolExtensionField_5753P26 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P26_t; +typedef struct ProtocolExtensionField_5753P27 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P27_t; +typedef struct ProtocolExtensionField_5753P28 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P28_t; +typedef struct ProtocolExtensionField_5753P29 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P29_t; +typedef struct ProtocolExtensionField_5753P30 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P30_t; +typedef struct ProtocolExtensionField_5753P31 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P31_t; +typedef struct ProtocolExtensionField_5753P32 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P32_t; +typedef struct ProtocolExtensionField_5753P33 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P33_t; +typedef struct ProtocolExtensionField_5753P34 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P34_t; +typedef struct ProtocolExtensionField_5753P35 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P35_t; +typedef struct ProtocolExtensionField_5753P36 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P36_t; +typedef struct ProtocolExtensionField_5753P37 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P37_t; +typedef struct ProtocolExtensionField_5753P38 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P38_t; +typedef struct ProtocolExtensionField_5753P39 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P39_t; +typedef struct ProtocolExtensionField_5753P40 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P40_t; +typedef struct ProtocolExtensionField_5753P41 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P41_t; +typedef struct ProtocolExtensionField_5753P42 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P42_t; +typedef struct ProtocolExtensionField_5753P43 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P43_t; +typedef struct ProtocolExtensionField_5753P44 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P44_t; +typedef struct ProtocolExtensionField_5753P45 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P45_t; +typedef struct ProtocolExtensionField_5753P46 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P46_t; +typedef struct ProtocolExtensionField_5753P47 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P47_t; +typedef struct ProtocolExtensionField_5753P48 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P48_t; +typedef struct ProtocolExtensionField_5753P49 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P49_t; +typedef struct ProtocolExtensionField_5753P50 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P50_t; +typedef struct ProtocolExtensionField_5753P51 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P51_t; +typedef struct ProtocolExtensionField_5753P52 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P52_t; +typedef struct ProtocolExtensionField_5753P53 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P53_t; +typedef struct ProtocolExtensionField_5753P54 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P54_t; +typedef struct ProtocolExtensionField_5753P55 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P55_t; +typedef struct ProtocolExtensionField_5753P56 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P56_t; +typedef struct ProtocolExtensionField_5753P57 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P57_t; +typedef struct ProtocolExtensionField_5753P58 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P58_t; +typedef struct ProtocolExtensionField_5753P59 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P59_t; +typedef struct ProtocolExtensionField_5753P60 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P60_t; +typedef struct ProtocolExtensionField_5753P61 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P61_t; +typedef struct ProtocolExtensionField_5753P62 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P62_t; +typedef struct ProtocolExtensionField_5753P63 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P63_t; +typedef struct ProtocolExtensionField_5753P64 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P64_t; +typedef struct ProtocolExtensionField_5753P65 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P65_t; +typedef struct ProtocolExtensionField_5753P66 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P66_t; +typedef struct ProtocolExtensionField_5753P67 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P67_t; +typedef struct ProtocolExtensionField_5753P68 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P68_t; +typedef struct ProtocolExtensionField_5753P69 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P69_t; +typedef struct ProtocolExtensionField_5753P70 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P70_t; +typedef struct ProtocolExtensionField_5753P71 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P71_t; +typedef struct ProtocolExtensionField_5753P72 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P72_t; +typedef struct ProtocolExtensionField_5753P73 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P73_t; +typedef struct ProtocolExtensionField_5753P74 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P74_t; +typedef struct ProtocolExtensionField_5753P75 { + S1ap_ProtocolExtensionID_t id; + S1ap_Criticality_t criticality; + ANY_t extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionField_5753P75_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P0; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P2; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P4; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P6; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P8; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P10; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P12; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P14; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P16; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P18; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P20; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P22; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P24; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P26; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P28; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P30; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P32; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P34; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P36; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P38; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P39; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P40; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P41; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P42; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P43; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P44; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P45; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P46; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P47; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P48; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P49; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P50; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P51; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P52; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P53; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P54; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P55; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P56; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P57; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P58; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P59; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P60; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P61; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P62; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P63; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P64; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P65; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P66; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P67; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P68; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P69; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P70; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P71; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P72; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P73; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P74; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionField_5753P75; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolExtensionField_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolIE-Container.c b/lib/asn/asn1c/ProtocolIE-Container.c new file mode 100644 index 0000000000..734e10a8ca --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-Container.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolIE-Container.h" + diff --git a/lib/asn/asn1c/ProtocolIE-Container.h b/lib/asn/asn1c/ProtocolIE-Container.h new file mode 100644 index 0000000000..6ab222f550 --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-Container.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolIE_Container_H_ +#define _ProtocolIE_Container_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Container_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolIE-ContainerList.c b/lib/asn/asn1c/ProtocolIE-ContainerList.c new file mode 100644 index 0000000000..5c6abfec03 --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-ContainerList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolIE-ContainerList.h" + +static asn_per_constraints_t asn_PER_type_ProtocolIE_ContainerList_5732P0_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ProtocolIE_ContainerList_5732P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_ContainerList_5732P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtocolIE_ContainerList_5732P0_specs_1 = { + sizeof(struct ProtocolIE_ContainerList_5732P0), + offsetof(struct ProtocolIE_ContainerList_5732P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ContainerList_5732P0 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_ContainerList_5732P0_tags_1, + sizeof(asn_DEF_ProtocolIE_ContainerList_5732P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_ContainerList_5732P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_ContainerList_5732P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_ContainerList_5732P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_ContainerList_5732P0_tags_1[0]), /* 1 */ + &asn_PER_type_ProtocolIE_ContainerList_5732P0_constr_1, + asn_MBR_ProtocolIE_ContainerList_5732P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolIE_ContainerList_5732P0_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/ProtocolIE-ContainerList.h b/lib/asn/asn1c/ProtocolIE-ContainerList.h new file mode 100644 index 0000000000..73e293505a --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-ContainerList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolIE_ContainerList_H_ +#define _ProtocolIE_ContainerList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* ProtocolIE-ContainerList */ +typedef struct ProtocolIE_ContainerList_5732P0 { + A_SEQUENCE_OF(struct ProtocolIE_Field) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_ContainerList_5732P0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ContainerList_5732P0; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _ProtocolIE_ContainerList_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolIE-ContainerPair.c b/lib/asn/asn1c/ProtocolIE-ContainerPair.c new file mode 100644 index 0000000000..e720a7e9dc --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-ContainerPair.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolIE-ContainerPair.h" + diff --git a/lib/asn/asn1c/ProtocolIE-ContainerPair.h b/lib/asn/asn1c/ProtocolIE-ContainerPair.h new file mode 100644 index 0000000000..c1f169ce3b --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-ContainerPair.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolIE_ContainerPair_H_ +#define _ProtocolIE_ContainerPair_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPair_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolIE-ContainerPairList.c b/lib/asn/asn1c/ProtocolIE-ContainerPairList.c new file mode 100644 index 0000000000..ad39d93886 --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-ContainerPairList.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolIE-ContainerPairList.h" + diff --git a/lib/asn/asn1c/ProtocolIE-ContainerPairList.h b/lib/asn/asn1c/ProtocolIE-ContainerPairList.h new file mode 100644 index 0000000000..ddb76745f9 --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-ContainerPairList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolIE_ContainerPairList_H_ +#define _ProtocolIE_ContainerPairList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPairList_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolIE-Field.c b/lib/asn/asn1c/ProtocolIE-Field.c new file mode 100644 index 0000000000..acb56f027f --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-Field.c @@ -0,0 +1,160 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolIE-Field.h" + +static int +memb_id_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_criticality_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 GCC_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_ProtocolIE_Field_5696P0_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtocolIE_Field_5696P0, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolIE_ID, + memb_id_constraint_1, + &asn_PER_memb_id_constr_2, + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolIE_Field_5696P0, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + memb_criticality_constraint_1, + &asn_PER_memb_criticality_constr_3, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtocolIE_Field_5696P0, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_value_constraint_1, + &asn_PER_memb_value_constr_4, + 0, + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Field_5696P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtocolIE_Field_5696P0_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ProtocolIE_Field_5696P0_specs_1 = { + sizeof(struct ProtocolIE_Field_5696P0), + offsetof(struct ProtocolIE_Field_5696P0, _asn_ctx), + asn_MAP_ProtocolIE_Field_5696P0_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Field_5696P0 = { + "ProtocolIE-Field", + "ProtocolIE-Field", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_Field_5696P0_tags_1, + sizeof(asn_DEF_ProtocolIE_Field_5696P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Field_5696P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_Field_5696P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Field_5696P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Field_5696P0_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_ProtocolIE_Field_5696P0_1, + 3, /* Elements count */ + &asn_SPC_ProtocolIE_Field_5696P0_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/ProtocolIE-Field.h b/lib/asn/asn1c/ProtocolIE-Field.h new file mode 100644 index 0000000000..ae0b6b8425 --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-Field.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolIE_Field_H_ +#define _ProtocolIE_Field_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ProtocolIE-ID.h" +#include "S1ap-Criticality.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-Field */ +typedef struct ProtocolIE_Field_5696P0 { + S1ap_ProtocolIE_ID_t id; + S1ap_Criticality_t criticality; + ANY_t value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Field_5696P0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Field_5696P0; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Field_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolIE-FieldPair.c b/lib/asn/asn1c/ProtocolIE-FieldPair.c new file mode 100644 index 0000000000..e9d4271592 --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-FieldPair.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolIE-FieldPair.h" + diff --git a/lib/asn/asn1c/ProtocolIE-FieldPair.h b/lib/asn/asn1c/ProtocolIE-FieldPair.h new file mode 100644 index 0000000000..52d7850ab1 --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-FieldPair.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolIE_FieldPair_H_ +#define _ProtocolIE_FieldPair_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_FieldPair_H_ */ +#include diff --git a/lib/asn/asn1c/ProtocolIE-SingleContainer.c b/lib/asn/asn1c/ProtocolIE-SingleContainer.c new file mode 100644 index 0000000000..115fd6324d --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-SingleContainer.c @@ -0,0 +1,1899 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "ProtocolIE-SingleContainer.h" + +int +ProtocolIE_SingleContainer_5692P0_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P0_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P0_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P0_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P0_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P0_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P0_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P0_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P0_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P0_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P0_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P0_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P1_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P1_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P1_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P1_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P1_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P1_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P1_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P1_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P1_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P1_2_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P2_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P2_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P2_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P2_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P2_3_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P3_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P3_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P3_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P3_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P3_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P3_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P3_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P3_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P3_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P3_4_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P4_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P4_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P4_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P4_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P4_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P4_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P4_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P4_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P4_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P4_5_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P5_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P5_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P5_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P5_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P5_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P5_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P5_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P5_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P5_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P5_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P5_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P5_6_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P6_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P6_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P6_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P6_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P6_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P6_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P6_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P6_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P6_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P6_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P6_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P6_7_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P7_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P7_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P7_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P7_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P7_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P7_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P7_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P7_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P7_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P7_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P7_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P7_8_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P8_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P8_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P8_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P8_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P8_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P8_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P8_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P8_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P8_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P8_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P8_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P8_9_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P9_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P9_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P9_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P9_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P9_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P9_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P9_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P9_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P9_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P9_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P9_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P9_10_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P10_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P10_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P10_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P10_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P10_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P10_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P10_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P10_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P10_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P10_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P10_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P10_11_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P11_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P11_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P11_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P11_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P11_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P11_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P11_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P11_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P11_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P11_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P11_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P11_12_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P12_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P12_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P12_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P12_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P12_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P12_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P12_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P12_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P12_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P12_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P12_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P12_13_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +int +ProtocolIE_SingleContainer_5692P13_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using ProtocolIE_Field_5696P0, + * so here we adjust the DEF accordingly. + */ +static void +ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_Field_5696P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_Field_5696P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_Field_5696P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_Field_5696P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_Field_5696P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_Field_5696P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_Field_5696P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_Field_5696P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_Field_5696P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_Field_5696P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_Field_5696P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_Field_5696P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_Field_5696P0.elements; + td->elements_count = asn_DEF_ProtocolIE_Field_5696P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_Field_5696P0.specifics; +} + +void +ProtocolIE_SingleContainer_5692P13_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +ProtocolIE_SingleContainer_5692P13_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P13_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P13_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P13_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P13_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P13_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P13_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +ProtocolIE_SingleContainer_5692P13_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +ProtocolIE_SingleContainer_5692P13_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + ProtocolIE_SingleContainer_5692P13_14_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P0 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P0_free, + ProtocolIE_SingleContainer_5692P0_print, + ProtocolIE_SingleContainer_5692P0_constraint, + ProtocolIE_SingleContainer_5692P0_decode_ber, + ProtocolIE_SingleContainer_5692P0_encode_der, + ProtocolIE_SingleContainer_5692P0_decode_xer, + ProtocolIE_SingleContainer_5692P0_encode_xer, + ProtocolIE_SingleContainer_5692P0_decode_uper, + ProtocolIE_SingleContainer_5692P0_encode_uper, + ProtocolIE_SingleContainer_5692P0_decode_aper, + ProtocolIE_SingleContainer_5692P0_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P0_tags_1, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P0_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P1 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P1_free, + ProtocolIE_SingleContainer_5692P1_print, + ProtocolIE_SingleContainer_5692P1_constraint, + ProtocolIE_SingleContainer_5692P1_decode_ber, + ProtocolIE_SingleContainer_5692P1_encode_der, + ProtocolIE_SingleContainer_5692P1_decode_xer, + ProtocolIE_SingleContainer_5692P1_encode_xer, + ProtocolIE_SingleContainer_5692P1_decode_uper, + ProtocolIE_SingleContainer_5692P1_encode_uper, + ProtocolIE_SingleContainer_5692P1_decode_aper, + ProtocolIE_SingleContainer_5692P1_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P1_tags_2, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P1_tags_2[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P1_tags_2, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P1_tags_2[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P2 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P2_free, + ProtocolIE_SingleContainer_5692P2_print, + ProtocolIE_SingleContainer_5692P2_constraint, + ProtocolIE_SingleContainer_5692P2_decode_ber, + ProtocolIE_SingleContainer_5692P2_encode_der, + ProtocolIE_SingleContainer_5692P2_decode_xer, + ProtocolIE_SingleContainer_5692P2_encode_xer, + ProtocolIE_SingleContainer_5692P2_decode_uper, + ProtocolIE_SingleContainer_5692P2_encode_uper, + ProtocolIE_SingleContainer_5692P2_decode_aper, + ProtocolIE_SingleContainer_5692P2_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P2_tags_3, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P2_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P2_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P2_tags_3[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P3 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P3_free, + ProtocolIE_SingleContainer_5692P3_print, + ProtocolIE_SingleContainer_5692P3_constraint, + ProtocolIE_SingleContainer_5692P3_decode_ber, + ProtocolIE_SingleContainer_5692P3_encode_der, + ProtocolIE_SingleContainer_5692P3_decode_xer, + ProtocolIE_SingleContainer_5692P3_encode_xer, + ProtocolIE_SingleContainer_5692P3_decode_uper, + ProtocolIE_SingleContainer_5692P3_encode_uper, + ProtocolIE_SingleContainer_5692P3_decode_aper, + ProtocolIE_SingleContainer_5692P3_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P3_tags_4, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P3_tags_4[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P3_tags_4, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P3_tags_4[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P4 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P4_free, + ProtocolIE_SingleContainer_5692P4_print, + ProtocolIE_SingleContainer_5692P4_constraint, + ProtocolIE_SingleContainer_5692P4_decode_ber, + ProtocolIE_SingleContainer_5692P4_encode_der, + ProtocolIE_SingleContainer_5692P4_decode_xer, + ProtocolIE_SingleContainer_5692P4_encode_xer, + ProtocolIE_SingleContainer_5692P4_decode_uper, + ProtocolIE_SingleContainer_5692P4_encode_uper, + ProtocolIE_SingleContainer_5692P4_decode_aper, + ProtocolIE_SingleContainer_5692P4_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P4_tags_5, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P4_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P4_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P4_tags_5[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P5 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P5_free, + ProtocolIE_SingleContainer_5692P5_print, + ProtocolIE_SingleContainer_5692P5_constraint, + ProtocolIE_SingleContainer_5692P5_decode_ber, + ProtocolIE_SingleContainer_5692P5_encode_der, + ProtocolIE_SingleContainer_5692P5_decode_xer, + ProtocolIE_SingleContainer_5692P5_encode_xer, + ProtocolIE_SingleContainer_5692P5_decode_uper, + ProtocolIE_SingleContainer_5692P5_encode_uper, + ProtocolIE_SingleContainer_5692P5_decode_aper, + ProtocolIE_SingleContainer_5692P5_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P5_tags_6, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P5_tags_6[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P5_tags_6, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P5_tags_6[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P6_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P6 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P6_free, + ProtocolIE_SingleContainer_5692P6_print, + ProtocolIE_SingleContainer_5692P6_constraint, + ProtocolIE_SingleContainer_5692P6_decode_ber, + ProtocolIE_SingleContainer_5692P6_encode_der, + ProtocolIE_SingleContainer_5692P6_decode_xer, + ProtocolIE_SingleContainer_5692P6_encode_xer, + ProtocolIE_SingleContainer_5692P6_decode_uper, + ProtocolIE_SingleContainer_5692P6_encode_uper, + ProtocolIE_SingleContainer_5692P6_decode_aper, + ProtocolIE_SingleContainer_5692P6_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P6_tags_7, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P6_tags_7) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P6_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P6_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P6_tags_7) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P6_tags_7[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P7_tags_8[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P7 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P7_free, + ProtocolIE_SingleContainer_5692P7_print, + ProtocolIE_SingleContainer_5692P7_constraint, + ProtocolIE_SingleContainer_5692P7_decode_ber, + ProtocolIE_SingleContainer_5692P7_encode_der, + ProtocolIE_SingleContainer_5692P7_decode_xer, + ProtocolIE_SingleContainer_5692P7_encode_xer, + ProtocolIE_SingleContainer_5692P7_decode_uper, + ProtocolIE_SingleContainer_5692P7_encode_uper, + ProtocolIE_SingleContainer_5692P7_decode_aper, + ProtocolIE_SingleContainer_5692P7_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P7_tags_8, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P7_tags_8) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P7_tags_8[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P7_tags_8, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P7_tags_8) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P7_tags_8[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P8_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P8 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P8_free, + ProtocolIE_SingleContainer_5692P8_print, + ProtocolIE_SingleContainer_5692P8_constraint, + ProtocolIE_SingleContainer_5692P8_decode_ber, + ProtocolIE_SingleContainer_5692P8_encode_der, + ProtocolIE_SingleContainer_5692P8_decode_xer, + ProtocolIE_SingleContainer_5692P8_encode_xer, + ProtocolIE_SingleContainer_5692P8_decode_uper, + ProtocolIE_SingleContainer_5692P8_encode_uper, + ProtocolIE_SingleContainer_5692P8_decode_aper, + ProtocolIE_SingleContainer_5692P8_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P8_tags_9, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P8_tags_9) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P8_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P8_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P8_tags_9) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P8_tags_9[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P9_tags_10[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P9 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P9_free, + ProtocolIE_SingleContainer_5692P9_print, + ProtocolIE_SingleContainer_5692P9_constraint, + ProtocolIE_SingleContainer_5692P9_decode_ber, + ProtocolIE_SingleContainer_5692P9_encode_der, + ProtocolIE_SingleContainer_5692P9_decode_xer, + ProtocolIE_SingleContainer_5692P9_encode_xer, + ProtocolIE_SingleContainer_5692P9_decode_uper, + ProtocolIE_SingleContainer_5692P9_encode_uper, + ProtocolIE_SingleContainer_5692P9_decode_aper, + ProtocolIE_SingleContainer_5692P9_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P9_tags_10, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P9_tags_10) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P9_tags_10[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P9_tags_10, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P9_tags_10) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P9_tags_10[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P10_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P10 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P10_free, + ProtocolIE_SingleContainer_5692P10_print, + ProtocolIE_SingleContainer_5692P10_constraint, + ProtocolIE_SingleContainer_5692P10_decode_ber, + ProtocolIE_SingleContainer_5692P10_encode_der, + ProtocolIE_SingleContainer_5692P10_decode_xer, + ProtocolIE_SingleContainer_5692P10_encode_xer, + ProtocolIE_SingleContainer_5692P10_decode_uper, + ProtocolIE_SingleContainer_5692P10_encode_uper, + ProtocolIE_SingleContainer_5692P10_decode_aper, + ProtocolIE_SingleContainer_5692P10_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P10_tags_11, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P10_tags_11) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P10_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P10_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P10_tags_11) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P10_tags_11[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P11_tags_12[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P11 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P11_free, + ProtocolIE_SingleContainer_5692P11_print, + ProtocolIE_SingleContainer_5692P11_constraint, + ProtocolIE_SingleContainer_5692P11_decode_ber, + ProtocolIE_SingleContainer_5692P11_encode_der, + ProtocolIE_SingleContainer_5692P11_decode_xer, + ProtocolIE_SingleContainer_5692P11_encode_xer, + ProtocolIE_SingleContainer_5692P11_decode_uper, + ProtocolIE_SingleContainer_5692P11_encode_uper, + ProtocolIE_SingleContainer_5692P11_decode_aper, + ProtocolIE_SingleContainer_5692P11_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P11_tags_12, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P11_tags_12) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P11_tags_12[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P11_tags_12, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P11_tags_12) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P11_tags_12[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P12_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P12 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P12_free, + ProtocolIE_SingleContainer_5692P12_print, + ProtocolIE_SingleContainer_5692P12_constraint, + ProtocolIE_SingleContainer_5692P12_decode_ber, + ProtocolIE_SingleContainer_5692P12_encode_der, + ProtocolIE_SingleContainer_5692P12_decode_xer, + ProtocolIE_SingleContainer_5692P12_encode_xer, + ProtocolIE_SingleContainer_5692P12_decode_uper, + ProtocolIE_SingleContainer_5692P12_encode_uper, + ProtocolIE_SingleContainer_5692P12_decode_aper, + ProtocolIE_SingleContainer_5692P12_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P12_tags_13, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P12_tags_13) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P12_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P12_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P12_tags_13) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P12_tags_13[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_5692P13_tags_14[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P13 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + ProtocolIE_SingleContainer_5692P13_free, + ProtocolIE_SingleContainer_5692P13_print, + ProtocolIE_SingleContainer_5692P13_constraint, + ProtocolIE_SingleContainer_5692P13_decode_ber, + ProtocolIE_SingleContainer_5692P13_encode_der, + ProtocolIE_SingleContainer_5692P13_decode_xer, + ProtocolIE_SingleContainer_5692P13_encode_xer, + ProtocolIE_SingleContainer_5692P13_decode_uper, + ProtocolIE_SingleContainer_5692P13_encode_uper, + ProtocolIE_SingleContainer_5692P13_decode_aper, + ProtocolIE_SingleContainer_5692P13_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_ProtocolIE_SingleContainer_5692P13_tags_14, + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P13_tags_14) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P13_tags_14[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_5692P13_tags_14, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P13_tags_14) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_5692P13_tags_14[0]), /* 1 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/ProtocolIE-SingleContainer.h b/lib/asn/asn1c/ProtocolIE-SingleContainer.h new file mode 100644 index 0000000000..1d5473e785 --- /dev/null +++ b/lib/asn/asn1c/ProtocolIE-SingleContainer.h @@ -0,0 +1,212 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _ProtocolIE_SingleContainer_H_ +#define _ProtocolIE_SingleContainer_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Field.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-SingleContainer */ +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P0_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P1_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P2_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P3_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P4_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P5_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P6_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P7_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P8_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P9_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P10_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P11_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P12_t; +typedef ProtocolIE_Field_5696P0_t ProtocolIE_SingleContainer_5692P13_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P0; +asn_struct_free_f ProtocolIE_SingleContainer_5692P0_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P0_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P0_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P0_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P0_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P0_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P0_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P0_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P0_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P0_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P0_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P1; +asn_struct_free_f ProtocolIE_SingleContainer_5692P1_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P1_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P1_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P1_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P1_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P1_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P1_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P1_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P1_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P1_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P1_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P2; +asn_struct_free_f ProtocolIE_SingleContainer_5692P2_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P2_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P2_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P2_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P2_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P2_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P2_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P2_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P2_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P2_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P2_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P3; +asn_struct_free_f ProtocolIE_SingleContainer_5692P3_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P3_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P3_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P3_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P3_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P3_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P3_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P3_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P3_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P3_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P3_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P4; +asn_struct_free_f ProtocolIE_SingleContainer_5692P4_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P4_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P4_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P4_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P4_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P4_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P4_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P4_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P4_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P4_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P4_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P5; +asn_struct_free_f ProtocolIE_SingleContainer_5692P5_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P5_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P5_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P5_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P5_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P5_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P5_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P5_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P5_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P5_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P5_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P6; +asn_struct_free_f ProtocolIE_SingleContainer_5692P6_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P6_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P6_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P6_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P6_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P6_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P6_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P6_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P6_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P6_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P6_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P7; +asn_struct_free_f ProtocolIE_SingleContainer_5692P7_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P7_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P7_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P7_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P7_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P7_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P7_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P7_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P7_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P7_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P7_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P8; +asn_struct_free_f ProtocolIE_SingleContainer_5692P8_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P8_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P8_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P8_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P8_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P8_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P8_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P8_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P8_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P8_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P8_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P9; +asn_struct_free_f ProtocolIE_SingleContainer_5692P9_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P9_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P9_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P9_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P9_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P9_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P9_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P9_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P9_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P9_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P9_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P10; +asn_struct_free_f ProtocolIE_SingleContainer_5692P10_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P10_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P10_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P10_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P10_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P10_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P10_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P10_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P10_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P10_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P10_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P11; +asn_struct_free_f ProtocolIE_SingleContainer_5692P11_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P11_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P11_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P11_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P11_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P11_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P11_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P11_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P11_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P11_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P11_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P12; +asn_struct_free_f ProtocolIE_SingleContainer_5692P12_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P12_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P12_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P12_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P12_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P12_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P12_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P12_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P12_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P12_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P12_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_5692P13; +asn_struct_free_f ProtocolIE_SingleContainer_5692P13_free; +asn_struct_print_f ProtocolIE_SingleContainer_5692P13_print; +asn_constr_check_f ProtocolIE_SingleContainer_5692P13_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_5692P13_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_5692P13_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_5692P13_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_5692P13_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_5692P13_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P13_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_5692P13_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_5692P13_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_SingleContainer_H_ */ +#include diff --git a/lib/asn/asn1c/S1AP-PDU.c b/lib/asn/asn1c/S1AP-PDU.c new file mode 100644 index 0000000000..ba89bf73f6 --- /dev/null +++ b/lib/asn/asn1c/S1AP-PDU.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1AP-PDU.h" + +static asn_per_constraints_t asn_PER_type_S1AP_PDU_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_PDU_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PDU, choice.initiatingMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_InitiatingMessage, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "initiatingMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PDU, choice.successfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_SuccessfulOutcome, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "successfulOutcome" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PDU, choice.unsuccessfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_UnsuccessfulOutcome, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "unsuccessfulOutcome" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_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_PDU_specs_1 = { + sizeof(struct S1AP_PDU), + offsetof(struct S1AP_PDU, _asn_ctx), + offsetof(struct S1AP_PDU, present), + sizeof(((struct S1AP_PDU *)0)->present), + asn_MAP_S1AP_PDU_tag2el_1, + 3, /* Count of tags in the map */ + 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PDU = { + "S1AP-PDU", + "S1AP-PDU", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1AP_PDU_constr_1, + asn_MBR_S1AP_PDU_1, + 3, /* Elements count */ + &asn_SPC_S1AP_PDU_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1AP-PDU.h b/lib/asn/asn1c/S1AP-PDU.h new file mode 100644 index 0000000000..0befdce7d8 --- /dev/null +++ b/lib/asn/asn1c/S1AP-PDU.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1AP_PDU_H_ +#define _S1AP_PDU_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-InitiatingMessage.h" +#include "S1ap-SuccessfulOutcome.h" +#include "S1ap-UnsuccessfulOutcome.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum 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_PDU_PR; + +/* S1AP-PDU */ +typedef struct S1AP_PDU { + S1AP_PDU_PR present; + union S1AP_PDU_u { + S1ap_InitiatingMessage_t initiatingMessage; + S1ap_SuccessfulOutcome_t successfulOutcome; + S1ap_UnsuccessfulOutcome_t unsuccessfulOutcome; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PDU; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PDU_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-AllocationAndRetentionPriority.c b/lib/asn/asn1c/S1ap-AllocationAndRetentionPriority.c new file mode 100644 index 0000000000..4ef3ebb920 --- /dev/null +++ b/lib/asn/asn1c/S1ap-AllocationAndRetentionPriority.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-AllocationAndRetentionPriority.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P14, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_AllocationAndRetentionPriority = { + "S1ap-AllocationAndRetentionPriority", + "S1ap-AllocationAndRetentionPriority", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_AllocationAndRetentionPriority_1, + 4, /* Elements count */ + &asn_SPC_S1ap_AllocationAndRetentionPriority_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-AllocationAndRetentionPriority.h b/lib/asn/asn1c/S1ap-AllocationAndRetentionPriority.h new file mode 100644 index 0000000000..ca26c2e13c --- /dev/null +++ b/lib/asn/asn1c/S1ap-AllocationAndRetentionPriority.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-AllocationAndRetentionPriority */ +typedef struct S1ap_AllocationAndRetentionPriority { + S1ap_PriorityLevel_t priorityLevel; + S1ap_Pre_emptionCapability_t pre_emptionCapability; + S1ap_Pre_emptionVulnerability_t pre_emptionVulnerability; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_AllocationAndRetentionPriority_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-AreaScopeOfMDT.c b/lib/asn/asn1c/S1ap-AreaScopeOfMDT.c new file mode 100644 index 0000000000..4dcf4c0ebd --- /dev/null +++ b/lib/asn/asn1c/S1ap-AreaScopeOfMDT.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-AreaScopeOfMDT.h" + +static asn_per_constraints_t asn_PER_type_S1ap_AreaScopeOfMDT_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1ap_AreaScopeOfMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_AreaScopeOfMDT, choice.cellBased), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_CellBasedMDT, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cellBased" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_AreaScopeOfMDT, choice.tABased), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_TABasedMDT, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "pLMNWide" + }, +}; +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 */ +}; +static 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, + 3, /* Count of tags in the map */ + 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_AreaScopeOfMDT = { + "S1ap-AreaScopeOfMDT", + "S1ap-AreaScopeOfMDT", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_AreaScopeOfMDT_constr_1, + asn_MBR_S1ap_AreaScopeOfMDT_1, + 3, /* Elements count */ + &asn_SPC_S1ap_AreaScopeOfMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-AreaScopeOfMDT.h b/lib/asn/asn1c/S1ap-AreaScopeOfMDT.h new file mode 100644 index 0000000000..520e1d6412 --- /dev/null +++ b/lib/asn/asn1c/S1ap-AreaScopeOfMDT.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_AreaScopeOfMDT_H_ +#define _S1ap_AreaScopeOfMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-CellBasedMDT.h" +#include "S1ap-TABasedMDT.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_AreaScopeOfMDT_PR { + S1ap_AreaScopeOfMDT_PR_NOTHING, /* No components present */ + S1ap_AreaScopeOfMDT_PR_cellBased, + S1ap_AreaScopeOfMDT_PR_tABased, + S1ap_AreaScopeOfMDT_PR_pLMNWide, + /* Extensions may appear below */ + +} S1ap_AreaScopeOfMDT_PR; + +/* S1ap-AreaScopeOfMDT */ +typedef struct S1ap_AreaScopeOfMDT { + S1ap_AreaScopeOfMDT_PR present; + union S1ap_AreaScopeOfMDT_u { + S1ap_CellBasedMDT_t cellBased; + S1ap_TABasedMDT_t tABased; + NULL_t pLMNWide; + /* + * This type is extensible, + * possible extensions are below. + */ + } 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_AreaScopeOfMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-BPLMNs.c b/lib/asn/asn1c/S1ap-BPLMNs.c new file mode 100644 index 0000000000..cabad8ab99 --- /dev/null +++ b/lib/asn/asn1c/S1ap-BPLMNs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-BPLMNs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_BPLMNs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1l, 6l } /* (SIZE(1..6)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_BPLMNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-BPLMNs", + "S1ap-BPLMNs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_BPLMNs_constr_1, + asn_MBR_S1ap_BPLMNs_1, + 1, /* Single element */ + &asn_SPC_S1ap_BPLMNs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-BPLMNs.h b/lib/asn/asn1c/S1ap-BPLMNs.h new file mode 100644 index 0000000000..1a4e0ed379 --- /dev/null +++ b/lib/asn/asn1c/S1ap-BPLMNs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_BPLMNs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransfer-Item.c b/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransfer-Item.c new file mode 100644 index 0000000000..9e7eabdeea --- /dev/null +++ b/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransfer-Item.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Bearers-SubjectToStatusTransfer-Item.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_Bearers_SubjectToStatusTransfer_Item, uL_S1ap_COUNTvalue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_COUNTvalue, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uL-S1ap-COUNTvalue" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_Bearers_SubjectToStatusTransfer_Item, dL_S1ap_COUNTvalue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_COUNTvalue, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "dL-S1ap-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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P15, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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-S1ap-COUNTvalue */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-S1ap-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 */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_Bearers_SubjectToStatusTransfer_Item = { + "S1ap-Bearers-SubjectToStatusTransfer-Item", + "S1ap-Bearers-SubjectToStatusTransfer-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_Bearers_SubjectToStatusTransfer_Item_1, + 5, /* Elements count */ + &asn_SPC_S1ap_Bearers_SubjectToStatusTransfer_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransfer-Item.h b/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransfer-Item.h new file mode 100644 index 0000000000..f1fa3f0013 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransfer-Item.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-Bearers-SubjectToStatusTransfer-Item */ +typedef struct S1ap_Bearers_SubjectToStatusTransfer_Item { + S1ap_E_RAB_ID_t e_RAB_ID; + S1ap_COUNTvalue_t uL_S1ap_COUNTvalue; + S1ap_COUNTvalue_t dL_S1ap_COUNTvalue; + S1ap_ReceiveStatusofULPDCPSDUs_t *receiveStatusofULPDCPSDUs /* OPTIONAL */; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_Bearers_SubjectToStatusTransfer_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransferList.c b/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransferList.c new file mode 100644 index 0000000000..e859f950e8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransferList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Bearers-SubjectToStatusTransferList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_Bearers_SubjectToStatusTransferList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1ap_Bearers_SubjectToStatusTransferList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_Bearers_SubjectToStatusTransferList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-Bearers-SubjectToStatusTransferList", + "S1ap-Bearers-SubjectToStatusTransferList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Bearers_SubjectToStatusTransferList_constr_1, + asn_MBR_S1ap_Bearers_SubjectToStatusTransferList_1, + 1, /* Single element */ + &asn_SPC_S1ap_Bearers_SubjectToStatusTransferList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransferList.h b/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransferList.h new file mode 100644 index 0000000000..1fe5e951a6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Bearers-SubjectToStatusTransferList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_Bearers_SubjectToStatusTransferList_H_ +#define _S1ap_Bearers_SubjectToStatusTransferList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-Bearers-SubjectToStatusTransferList */ +typedef struct S1ap_Bearers_SubjectToStatusTransferList { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_Bearers_SubjectToStatusTransferList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-BitRate.c b/lib/asn/asn1c/S1ap-BitRate.c new file mode 100644 index 0000000000..ced50e7413 --- /dev/null +++ b/lib/asn/asn1c/S1ap-BitRate.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-BitRate.h" + +int +S1ap_BitRate_constraint(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 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 >= 0LL && value <= 10000000000LL)) { + /* 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 void +S1ap_BitRate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_INTEGER.free_struct; + td->print_struct = asn_DEF_INTEGER.print_struct; + td->check_constraints = asn_DEF_INTEGER.check_constraints; + td->ber_decoder = asn_DEF_INTEGER.ber_decoder; + td->der_encoder = asn_DEF_INTEGER.der_encoder; + td->xer_decoder = asn_DEF_INTEGER.xer_decoder; + td->xer_encoder = asn_DEF_INTEGER.xer_encoder; + td->uper_decoder = asn_DEF_INTEGER.uper_decoder; + td->uper_encoder = asn_DEF_INTEGER.uper_encoder; + td->aper_decoder = asn_DEF_INTEGER.aper_decoder; + td->aper_encoder = asn_DEF_INTEGER.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_INTEGER.per_constraints; + td->elements = asn_DEF_INTEGER.elements; + td->elements_count = asn_DEF_INTEGER.elements_count; + td->specifics = asn_DEF_INTEGER.specifics; +} + +void +S1ap_BitRate_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_BitRate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_BitRate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_BitRate_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_BitRate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_BitRate_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_BitRate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_BitRate_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_BitRate_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_BitRate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_BitRate_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_BitRate_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 34, -1, 0l, 10000000000ull } /* (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 = { + "S1ap-BitRate", + "S1ap-BitRate", + S1ap_BitRate_free, + S1ap_BitRate_print, + S1ap_BitRate_constraint, + S1ap_BitRate_decode_ber, + S1ap_BitRate_encode_der, + S1ap_BitRate_decode_xer, + S1ap_BitRate_encode_xer, + S1ap_BitRate_decode_uper, + S1ap_BitRate_encode_uper, + S1ap_BitRate_decode_aper, + S1ap_BitRate_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_BitRate_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-BitRate.h b/lib/asn/asn1c/S1ap-BitRate.h new file mode 100644 index 0000000000..c074eacae8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-BitRate.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-BroadcastCancelledAreaList.c b/lib/asn/asn1c/S1ap-BroadcastCancelledAreaList.c new file mode 100644 index 0000000000..fb7debdd8d --- /dev/null +++ b/lib/asn/asn1c/S1ap-BroadcastCancelledAreaList.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-BroadcastCancelledAreaList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_BroadcastCancelledAreaList_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (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_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cellID-Cancelled" + }, + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "tAI-Cancelled" + }, + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_BroadcastCancelledAreaList = { + "S1ap-BroadcastCancelledAreaList", + "S1ap-BroadcastCancelledAreaList", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_BroadcastCancelledAreaList_constr_1, + asn_MBR_S1ap_BroadcastCancelledAreaList_1, + 3, /* Elements count */ + &asn_SPC_S1ap_BroadcastCancelledAreaList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-BroadcastCancelledAreaList.h b/lib/asn/asn1c/S1ap-BroadcastCancelledAreaList.h new file mode 100644 index 0000000000..47be2b4ccc --- /dev/null +++ b/lib/asn/asn1c/S1ap-BroadcastCancelledAreaList.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_BroadcastCancelledAreaList_H_ +#define _S1ap_BroadcastCancelledAreaList_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-CellID-Cancelled.h" +#include "S1ap-TAI-Cancelled.h" +#include "S1ap-EmergencyAreaID-Cancelled.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_BroadcastCancelledAreaList_PR { + S1ap_BroadcastCancelledAreaList_PR_NOTHING, /* No components present */ + S1ap_BroadcastCancelledAreaList_PR_cellID_Cancelled, + S1ap_BroadcastCancelledAreaList_PR_tAI_Cancelled, + S1ap_BroadcastCancelledAreaList_PR_emergencyAreaID_Cancelled, + /* Extensions may appear below */ + +} S1ap_BroadcastCancelledAreaList_PR; + +/* S1ap-BroadcastCancelledAreaList */ +typedef struct S1ap_BroadcastCancelledAreaList { + S1ap_BroadcastCancelledAreaList_PR present; + union S1ap_BroadcastCancelledAreaList_u { + S1ap_CellID_Cancelled_t cellID_Cancelled; + S1ap_TAI_Cancelled_t tAI_Cancelled; + S1ap_EmergencyAreaID_Cancelled_t 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/asn/asn1c/S1ap-BroadcastCompletedAreaList.c b/lib/asn/asn1c/S1ap-BroadcastCompletedAreaList.c new file mode 100644 index 0000000000..7796d0411d --- /dev/null +++ b/lib/asn/asn1c/S1ap-BroadcastCompletedAreaList.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-BroadcastCompletedAreaList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_BroadcastCompletedAreaList_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (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_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cellID-Broadcast" + }, + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "tAI-Broadcast" + }, + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_BroadcastCompletedAreaList = { + "S1ap-BroadcastCompletedAreaList", + "S1ap-BroadcastCompletedAreaList", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_BroadcastCompletedAreaList_constr_1, + asn_MBR_S1ap_BroadcastCompletedAreaList_1, + 3, /* Elements count */ + &asn_SPC_S1ap_BroadcastCompletedAreaList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-BroadcastCompletedAreaList.h b/lib/asn/asn1c/S1ap-BroadcastCompletedAreaList.h new file mode 100644 index 0000000000..1934f8d1a6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-BroadcastCompletedAreaList.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_BroadcastCompletedAreaList_H_ +#define _S1ap_BroadcastCompletedAreaList_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-CellID-Broadcast.h" +#include "S1ap-TAI-Broadcast.h" +#include "S1ap-EmergencyAreaID-Broadcast.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_BroadcastCompletedAreaList_PR { + S1ap_BroadcastCompletedAreaList_PR_NOTHING, /* No components present */ + S1ap_BroadcastCompletedAreaList_PR_cellID_Broadcast, + S1ap_BroadcastCompletedAreaList_PR_tAI_Broadcast, + S1ap_BroadcastCompletedAreaList_PR_emergencyAreaID_Broadcast, + /* Extensions may appear below */ + +} S1ap_BroadcastCompletedAreaList_PR; + +/* S1ap-BroadcastCompletedAreaList */ +typedef struct S1ap_BroadcastCompletedAreaList { + S1ap_BroadcastCompletedAreaList_PR present; + union S1ap_BroadcastCompletedAreaList_u { + S1ap_CellID_Broadcast_t cellID_Broadcast; + S1ap_TAI_Broadcast_t tAI_Broadcast; + S1ap_EmergencyAreaID_Broadcast_t 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/asn/asn1c/S1ap-CGI.c b/lib/asn/asn1c/S1ap-CGI.c new file mode 100644 index 0000000000..d07f287959 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CGI.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CGI.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "rAC" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_CGI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P23, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CGI = { + "S1ap-CGI", + "S1ap-CGI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CGI_1, + 5, /* Elements count */ + &asn_SPC_S1ap_CGI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CGI.h b/lib/asn/asn1c/S1ap-CGI.h new file mode 100644 index 0000000000..9ab6eb6fe8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CGI.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CGI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CI.c b/lib/asn/asn1c/S1ap-CI.c new file mode 100644 index 0000000000..6580f66f5b --- /dev/null +++ b/lib/asn/asn1c/S1ap-CI.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CI.h" + +int +S1ap_CI_constraint(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 == 2LL)) { + /* 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 void +S1ap_CI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_CI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (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 = { + "S1ap-CI", + "S1ap-CI", + S1ap_CI_free, + S1ap_CI_print, + S1ap_CI_constraint, + S1ap_CI_decode_ber, + S1ap_CI_encode_der, + S1ap_CI_decode_xer, + S1ap_CI_encode_xer, + S1ap_CI_decode_uper, + S1ap_CI_encode_uper, + S1ap_CI_decode_aper, + S1ap_CI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-CI.h b/lib/asn/asn1c/S1ap-CI.h new file mode 100644 index 0000000000..f0fba9d06e --- /dev/null +++ b/lib/asn/asn1c/S1ap-CI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-CNDomain.c b/lib/asn/asn1c/S1ap-CNDomain.c new file mode 100644 index 0000000000..2d656e53c2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CNDomain.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CNDomain.h" + +int +S1ap_CNDomain_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CNDomain_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CNDomain_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CNDomain_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CNDomain_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CNDomain_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CNDomain_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CNDomain_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CNDomain_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CNDomain_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CNDomain_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CNDomain_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CNDomain_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CNDomain_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (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 = { + "S1ap-CNDomain", + "S1ap-CNDomain", + S1ap_CNDomain_free, + S1ap_CNDomain_print, + S1ap_CNDomain_constraint, + S1ap_CNDomain_decode_ber, + S1ap_CNDomain_encode_der, + S1ap_CNDomain_decode_xer, + S1ap_CNDomain_encode_xer, + S1ap_CNDomain_decode_uper, + S1ap_CNDomain_encode_uper, + S1ap_CNDomain_decode_aper, + S1ap_CNDomain_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CNDomain_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CNDomain_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CNDomain.h b/lib/asn/asn1c/S1ap-CNDomain.h new file mode 100644 index 0000000000..1b53f20a1e --- /dev/null +++ b/lib/asn/asn1c/S1ap-CNDomain.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-COUNTvalue.c b/lib/asn/asn1c/S1ap-COUNTvalue.c new file mode 100644 index 0000000000..42d5eaa67c --- /dev/null +++ b/lib/asn/asn1c/S1ap-COUNTvalue.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-COUNTvalue.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "hFN" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_COUNTvalue, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P25, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_COUNTvalue = { + "S1ap-COUNTvalue", + "S1ap-COUNTvalue", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_COUNTvalue_1, + 3, /* Elements count */ + &asn_SPC_S1ap_COUNTvalue_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-COUNTvalue.h b/lib/asn/asn1c/S1ap-COUNTvalue.h new file mode 100644 index 0000000000..828a4741e8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-COUNTvalue.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-COUNTvalue */ +typedef struct S1ap_COUNTvalue { + S1ap_PDCP_SN_t pDCP_SN; + S1ap_HFN_t hFN; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_COUNTvalue_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CSFallbackIndicator.c b/lib/asn/asn1c/S1ap-CSFallbackIndicator.c new file mode 100644 index 0000000000..1c68089017 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSFallbackIndicator.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CSFallbackIndicator.h" + +int +S1ap_CSFallbackIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CSFallbackIndicator_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CSFallbackIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSFallbackIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CSFallbackIndicator_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSFallbackIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CSFallbackIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSFallbackIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CSFallbackIndicator_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CSFallbackIndicator_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CSFallbackIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CSFallbackIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CSFallbackIndicator_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-CSFallbackIndicator", + "S1ap-CSFallbackIndicator", + S1ap_CSFallbackIndicator_free, + S1ap_CSFallbackIndicator_print, + S1ap_CSFallbackIndicator_constraint, + S1ap_CSFallbackIndicator_decode_ber, + S1ap_CSFallbackIndicator_encode_der, + S1ap_CSFallbackIndicator_decode_xer, + S1ap_CSFallbackIndicator_encode_xer, + S1ap_CSFallbackIndicator_decode_uper, + S1ap_CSFallbackIndicator_encode_uper, + S1ap_CSFallbackIndicator_decode_aper, + S1ap_CSFallbackIndicator_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CSFallbackIndicator_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CSFallbackIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CSFallbackIndicator.h b/lib/asn/asn1c/S1ap-CSFallbackIndicator.h new file mode 100644 index 0000000000..35c864743b --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSFallbackIndicator.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-CSG-Id.c b/lib/asn/asn1c/S1ap-CSG-Id.c new file mode 100644 index 0000000000..1d32cfe3ee --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSG-Id.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CSG-Id.h" + +int +S1ap_CSG_Id_constraint(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 == 27LL)) { + /* 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 void +S1ap_CSG_Id_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_CSG_Id_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CSG_Id_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSG_Id_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CSG_Id_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSG_Id_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CSG_Id_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSG_Id_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CSG_Id_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CSG_Id_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CSG_Id_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CSG_Id_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CSG_Id_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 27l, 27l } /* (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 = { + "S1ap-CSG-Id", + "S1ap-CSG-Id", + S1ap_CSG_Id_free, + S1ap_CSG_Id_print, + S1ap_CSG_Id_constraint, + S1ap_CSG_Id_decode_ber, + S1ap_CSG_Id_encode_der, + S1ap_CSG_Id_decode_xer, + S1ap_CSG_Id_encode_xer, + S1ap_CSG_Id_decode_uper, + S1ap_CSG_Id_encode_uper, + S1ap_CSG_Id_decode_aper, + S1ap_CSG_Id_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CSG_Id_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-CSG-Id.h b/lib/asn/asn1c/S1ap-CSG-Id.h new file mode 100644 index 0000000000..a2f7abe796 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSG-Id.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-CSG-IdList-Item.c b/lib/asn/asn1c/S1ap-CSG-IdList-Item.c new file mode 100644 index 0000000000..941755918a --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSG-IdList-Item.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CSG-IdList-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P24, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CSG_IdList_Item = { + "S1ap-CSG-IdList-Item", + "S1ap-CSG-IdList-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CSG_IdList_Item_1, + 2, /* Elements count */ + &asn_SPC_S1ap_CSG_IdList_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CSG-IdList-Item.h b/lib/asn/asn1c/S1ap-CSG-IdList-Item.h new file mode 100644 index 0000000000..5ea5ed5ba0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSG-IdList-Item.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CSG-IdList-Item */ +typedef struct S1ap_CSG_IdList_Item { + S1ap_CSG_Id_t cSG_Id; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CSG_IdList_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CSG-IdList.c b/lib/asn/asn1c/S1ap-CSG-IdList.c new file mode 100644 index 0000000000..e53bd3cbe2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSG-IdList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CSG-IdList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CSG_IdList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-CSG-IdList", + "S1ap-CSG-IdList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CSG_IdList_constr_1, + asn_MBR_S1ap_CSG_IdList_1, + 1, /* Single element */ + &asn_SPC_S1ap_CSG_IdList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CSG-IdList.h b/lib/asn/asn1c/S1ap-CSG-IdList.h new file mode 100644 index 0000000000..34f1b536a7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSG-IdList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 + +/* Referred external types */ +#include "S1ap-CSG-IdList-Item.h" + +#endif /* _S1ap_CSG_IdList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CSGMembershipStatus.c b/lib/asn/asn1c/S1ap-CSGMembershipStatus.c new file mode 100644 index 0000000000..9ee324405f --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSGMembershipStatus.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CSGMembershipStatus.h" + +int +S1ap_CSGMembershipStatus_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CSGMembershipStatus_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CSGMembershipStatus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSGMembershipStatus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CSGMembershipStatus_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSGMembershipStatus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CSGMembershipStatus_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CSGMembershipStatus_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CSGMembershipStatus_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CSGMembershipStatus_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CSGMembershipStatus_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CSGMembershipStatus_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CSGMembershipStatus_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (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) */ +}; +static 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 = { + "S1ap-CSGMembershipStatus", + "S1ap-CSGMembershipStatus", + S1ap_CSGMembershipStatus_free, + S1ap_CSGMembershipStatus_print, + S1ap_CSGMembershipStatus_constraint, + S1ap_CSGMembershipStatus_decode_ber, + S1ap_CSGMembershipStatus_encode_der, + S1ap_CSGMembershipStatus_decode_xer, + S1ap_CSGMembershipStatus_encode_xer, + S1ap_CSGMembershipStatus_decode_uper, + S1ap_CSGMembershipStatus_encode_uper, + S1ap_CSGMembershipStatus_decode_aper, + S1ap_CSGMembershipStatus_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CSGMembershipStatus_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CSGMembershipStatus_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CSGMembershipStatus.h b/lib/asn/asn1c/S1ap-CSGMembershipStatus.h new file mode 100644 index 0000000000..d25f9559b7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CSGMembershipStatus.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_CSGMembershipStatus; +asn_struct_free_f S1ap_CSGMembershipStatus_free; +asn_struct_print_f S1ap_CSGMembershipStatus_print; +asn_constr_check_f S1ap_CSGMembershipStatus_constraint; +ber_type_decoder_f S1ap_CSGMembershipStatus_decode_ber; +der_type_encoder_f S1ap_CSGMembershipStatus_encode_der; +xer_type_decoder_f S1ap_CSGMembershipStatus_decode_xer; +xer_type_encoder_f S1ap_CSGMembershipStatus_encode_xer; +per_type_decoder_f S1ap_CSGMembershipStatus_decode_uper; +per_type_encoder_f S1ap_CSGMembershipStatus_encode_uper; +per_type_decoder_f S1ap_CSGMembershipStatus_decode_aper; +per_type_encoder_f S1ap_CSGMembershipStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_CSGMembershipStatus_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.c b/lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.c new file mode 100644 index 0000000000..ef1fb39ae8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CancelledCellinEAI-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P16, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CancelledCellinEAI_Item = { + "S1ap-CancelledCellinEAI-Item", + "S1ap-CancelledCellinEAI-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CancelledCellinEAI_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_CancelledCellinEAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.h b/lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.h new file mode 100644 index 0000000000..0ceeefde11 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CancelledCellinEAI-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CancelledCellinEAI-Item */ +typedef struct S1ap_CancelledCellinEAI_Item { + S1ap_EUTRAN_CGI_t eCGI; + S1ap_NumberOfBroadcasts_t numberOfBroadcasts; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CancelledCellinEAI_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CancelledCellinEAI.c b/lib/asn/asn1c/S1ap-CancelledCellinEAI.c new file mode 100644 index 0000000000..b640027f19 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CancelledCellinEAI.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CancelledCellinEAI.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CancelledCellinEAI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_CancelledCellinEAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-CancelledCellinEAI", + "S1ap-CancelledCellinEAI", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CancelledCellinEAI_constr_1, + asn_MBR_S1ap_CancelledCellinEAI_1, + 1, /* Single element */ + &asn_SPC_S1ap_CancelledCellinEAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CancelledCellinEAI.h b/lib/asn/asn1c/S1ap-CancelledCellinEAI.h new file mode 100644 index 0000000000..e421a25bf0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CancelledCellinEAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-CancelledCellinEAI-Item.h" + +#endif /* _S1ap_CancelledCellinEAI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.c b/lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.c new file mode 100644 index 0000000000..9ab4994b26 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CancelledCellinTAI-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P17, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CancelledCellinTAI_Item = { + "S1ap-CancelledCellinTAI-Item", + "S1ap-CancelledCellinTAI-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CancelledCellinTAI_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_CancelledCellinTAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.h b/lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.h new file mode 100644 index 0000000000..5695fda9b3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CancelledCellinTAI-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CancelledCellinTAI-Item */ +typedef struct S1ap_CancelledCellinTAI_Item { + S1ap_EUTRAN_CGI_t eCGI; + S1ap_NumberOfBroadcasts_t numberOfBroadcasts; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CancelledCellinTAI_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CancelledCellinTAI.c b/lib/asn/asn1c/S1ap-CancelledCellinTAI.c new file mode 100644 index 0000000000..bec60b82b1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CancelledCellinTAI.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CancelledCellinTAI.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CancelledCellinTAI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_CancelledCellinTAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-CancelledCellinTAI", + "S1ap-CancelledCellinTAI", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CancelledCellinTAI_constr_1, + asn_MBR_S1ap_CancelledCellinTAI_1, + 1, /* Single element */ + &asn_SPC_S1ap_CancelledCellinTAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CancelledCellinTAI.h b/lib/asn/asn1c/S1ap-CancelledCellinTAI.h new file mode 100644 index 0000000000..577938bb43 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CancelledCellinTAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-CancelledCellinTAI-Item.h" + +#endif /* _S1ap_CancelledCellinTAI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Cause.c b/lib/asn/asn1c/S1ap-Cause.c new file mode 100644 index 0000000000..6517d9a27a --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cause.c @@ -0,0 +1,103 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cause.h" + +static asn_per_constraints_t asn_PER_type_S1ap_Cause_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 4l } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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, + 5 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_Cause = { + "S1ap-Cause", + "S1ap-Cause", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_Cause_constr_1, + asn_MBR_S1ap_Cause_1, + 5, /* Elements count */ + &asn_SPC_S1ap_Cause_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cause.h b/lib/asn/asn1c/S1ap-Cause.h new file mode 100644 index 0000000000..434f18c72b --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cause.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 { + S1ap_Cause_PR_NOTHING, /* No components present */ + S1ap_Cause_PR_radioNetwork, + S1ap_Cause_PR_transport, + S1ap_Cause_PR_nas, + S1ap_Cause_PR_protocol, + S1ap_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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_Cause_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CauseMisc.c b/lib/asn/asn1c/S1ap-CauseMisc.c new file mode 100644 index 0000000000..d33e87ff39 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseMisc.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CauseMisc.h" + +int +S1ap_CauseMisc_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CauseMisc_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CauseMisc_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CauseMisc_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseMisc_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CauseMisc_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseMisc_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CauseMisc_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseMisc_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CauseMisc_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CauseMisc_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CauseMisc_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseMisc_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CauseMisc_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 5l } /* (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 */ +}; +static 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 = { + "S1ap-CauseMisc", + "S1ap-CauseMisc", + S1ap_CauseMisc_free, + S1ap_CauseMisc_print, + S1ap_CauseMisc_constraint, + S1ap_CauseMisc_decode_ber, + S1ap_CauseMisc_encode_der, + S1ap_CauseMisc_decode_xer, + S1ap_CauseMisc_encode_xer, + S1ap_CauseMisc_decode_uper, + S1ap_CauseMisc_encode_uper, + S1ap_CauseMisc_decode_aper, + S1ap_CauseMisc_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CauseMisc_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CauseMisc_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CauseMisc.h b/lib/asn/asn1c/S1ap-CauseMisc.h new file mode 100644 index 0000000000..4901678c63 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseMisc.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_CauseMisc; +asn_struct_free_f S1ap_CauseMisc_free; +asn_struct_print_f S1ap_CauseMisc_print; +asn_constr_check_f S1ap_CauseMisc_constraint; +ber_type_decoder_f S1ap_CauseMisc_decode_ber; +der_type_encoder_f S1ap_CauseMisc_encode_der; +xer_type_decoder_f S1ap_CauseMisc_decode_xer; +xer_type_encoder_f S1ap_CauseMisc_encode_xer; +per_type_decoder_f S1ap_CauseMisc_decode_uper; +per_type_encoder_f S1ap_CauseMisc_encode_uper; +per_type_decoder_f S1ap_CauseMisc_decode_aper; +per_type_encoder_f S1ap_CauseMisc_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_CauseMisc_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CauseNas.c b/lib/asn/asn1c/S1ap-CauseNas.c new file mode 100644 index 0000000000..d51a5a8700 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseNas.c @@ -0,0 +1,174 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CauseNas.h" + +int +S1ap_CauseNas_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CauseNas_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CauseNas_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CauseNas_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseNas_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CauseNas_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseNas_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CauseNas_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseNas_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CauseNas_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CauseNas_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CauseNas_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseNas_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CauseNas_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (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 */ +}; +static 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 = { + "S1ap-CauseNas", + "S1ap-CauseNas", + S1ap_CauseNas_free, + S1ap_CauseNas_print, + S1ap_CauseNas_constraint, + S1ap_CauseNas_decode_ber, + S1ap_CauseNas_encode_der, + S1ap_CauseNas_decode_xer, + S1ap_CauseNas_encode_xer, + S1ap_CauseNas_decode_uper, + S1ap_CauseNas_encode_uper, + S1ap_CauseNas_decode_aper, + S1ap_CauseNas_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CauseNas_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CauseNas_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CauseNas.h b/lib/asn/asn1c/S1ap-CauseNas.h new file mode 100644 index 0000000000..d674d67993 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseNas.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_CauseNas; +asn_struct_free_f S1ap_CauseNas_free; +asn_struct_print_f S1ap_CauseNas_print; +asn_constr_check_f S1ap_CauseNas_constraint; +ber_type_decoder_f S1ap_CauseNas_decode_ber; +der_type_encoder_f S1ap_CauseNas_encode_der; +xer_type_decoder_f S1ap_CauseNas_decode_xer; +xer_type_encoder_f S1ap_CauseNas_encode_xer; +per_type_decoder_f S1ap_CauseNas_decode_uper; +per_type_encoder_f S1ap_CauseNas_encode_uper; +per_type_decoder_f S1ap_CauseNas_decode_aper; +per_type_encoder_f S1ap_CauseNas_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_CauseNas_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CauseProtocol.c b/lib/asn/asn1c/S1ap-CauseProtocol.c new file mode 100644 index 0000000000..c601676858 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseProtocol.c @@ -0,0 +1,178 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CauseProtocol.h" + +int +S1ap_CauseProtocol_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CauseProtocol_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CauseProtocol_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CauseProtocol_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseProtocol_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CauseProtocol_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseProtocol_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CauseProtocol_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseProtocol_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CauseProtocol_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CauseProtocol_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CauseProtocol_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseProtocol_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CauseProtocol_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 6l } /* (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 */ +}; +static 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 = { + "S1ap-CauseProtocol", + "S1ap-CauseProtocol", + S1ap_CauseProtocol_free, + S1ap_CauseProtocol_print, + S1ap_CauseProtocol_constraint, + S1ap_CauseProtocol_decode_ber, + S1ap_CauseProtocol_encode_der, + S1ap_CauseProtocol_decode_xer, + S1ap_CauseProtocol_encode_xer, + S1ap_CauseProtocol_decode_uper, + S1ap_CauseProtocol_encode_uper, + S1ap_CauseProtocol_decode_aper, + S1ap_CauseProtocol_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CauseProtocol_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CauseProtocol_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CauseProtocol.h b/lib/asn/asn1c/S1ap-CauseProtocol.h new file mode 100644 index 0000000000..a9aaa6e93d --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseProtocol.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_CauseProtocol; +asn_struct_free_f S1ap_CauseProtocol_free; +asn_struct_print_f S1ap_CauseProtocol_print; +asn_constr_check_f S1ap_CauseProtocol_constraint; +ber_type_decoder_f S1ap_CauseProtocol_decode_ber; +der_type_encoder_f S1ap_CauseProtocol_encode_der; +xer_type_decoder_f S1ap_CauseProtocol_decode_xer; +xer_type_encoder_f S1ap_CauseProtocol_encode_xer; +per_type_decoder_f S1ap_CauseProtocol_decode_uper; +per_type_encoder_f S1ap_CauseProtocol_encode_uper; +per_type_decoder_f S1ap_CauseProtocol_decode_aper; +per_type_encoder_f S1ap_CauseProtocol_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_CauseProtocol_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CauseRadioNetwork.c b/lib/asn/asn1c/S1ap-CauseRadioNetwork.c new file mode 100644 index 0000000000..b5a91a545d --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseRadioNetwork.c @@ -0,0 +1,242 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CauseRadioNetwork.h" + +int +S1ap_CauseRadioNetwork_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CauseRadioNetwork_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CauseRadioNetwork_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseRadioNetwork_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CauseRadioNetwork_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseRadioNetwork_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CauseRadioNetwork_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseRadioNetwork_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CauseRadioNetwork_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CauseRadioNetwork_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CauseRadioNetwork_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseRadioNetwork_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CauseRadioNetwork_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0l, 35l } /* (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, 21, "unknown-S1ap-E-RAB-ID" }, + { 31, 32, "multiple-S1ap-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, 28, "not-supported-S1ap-QCI-value" }, + { 38, 14, "invalid-CSG-Id" } + /* 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-S1ap-E-RAB-ID-instances(31) */ + 12, /* no-radio-resources-available-in-target-cell(12) */ + 37, /* not-supported-S1ap-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) */ + 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-S1ap-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 */ +}; +static 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 */ + 39, /* 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 = { + "S1ap-CauseRadioNetwork", + "S1ap-CauseRadioNetwork", + S1ap_CauseRadioNetwork_free, + S1ap_CauseRadioNetwork_print, + S1ap_CauseRadioNetwork_constraint, + S1ap_CauseRadioNetwork_decode_ber, + S1ap_CauseRadioNetwork_encode_der, + S1ap_CauseRadioNetwork_decode_xer, + S1ap_CauseRadioNetwork_encode_xer, + S1ap_CauseRadioNetwork_decode_uper, + S1ap_CauseRadioNetwork_encode_uper, + S1ap_CauseRadioNetwork_decode_aper, + S1ap_CauseRadioNetwork_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CauseRadioNetwork_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CauseRadioNetwork_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CauseRadioNetwork.h b/lib/asn/asn1c/S1ap-CauseRadioNetwork.h new file mode 100644 index 0000000000..57cbd7f65c --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseRadioNetwork.h @@ -0,0 +1,89 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_S1ap_E_RAB_ID = 30, + S1ap_CauseRadioNetwork_multiple_S1ap_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_S1ap_QCI_value = 37, + S1ap_CauseRadioNetwork_invalid_CSG_Id = 38 +} e_S1ap_CauseRadioNetwork; + +/* S1ap-CauseRadioNetwork */ +typedef long S1ap_CauseRadioNetwork_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_CauseRadioNetwork; +asn_struct_free_f S1ap_CauseRadioNetwork_free; +asn_struct_print_f S1ap_CauseRadioNetwork_print; +asn_constr_check_f S1ap_CauseRadioNetwork_constraint; +ber_type_decoder_f S1ap_CauseRadioNetwork_decode_ber; +der_type_encoder_f S1ap_CauseRadioNetwork_encode_der; +xer_type_decoder_f S1ap_CauseRadioNetwork_decode_xer; +xer_type_encoder_f S1ap_CauseRadioNetwork_encode_xer; +per_type_decoder_f S1ap_CauseRadioNetwork_decode_uper; +per_type_encoder_f S1ap_CauseRadioNetwork_encode_uper; +per_type_decoder_f S1ap_CauseRadioNetwork_decode_aper; +per_type_encoder_f S1ap_CauseRadioNetwork_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_CauseRadioNetwork_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CauseTransport.c b/lib/asn/asn1c/S1ap-CauseTransport.c new file mode 100644 index 0000000000..e6550a5732 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseTransport.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CauseTransport.h" + +int +S1ap_CauseTransport_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CauseTransport_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CauseTransport_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CauseTransport_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseTransport_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CauseTransport_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseTransport_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CauseTransport_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CauseTransport_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CauseTransport_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CauseTransport_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CauseTransport_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CauseTransport_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CauseTransport_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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 */ +}; +static 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 = { + "S1ap-CauseTransport", + "S1ap-CauseTransport", + S1ap_CauseTransport_free, + S1ap_CauseTransport_print, + S1ap_CauseTransport_constraint, + S1ap_CauseTransport_decode_ber, + S1ap_CauseTransport_encode_der, + S1ap_CauseTransport_decode_xer, + S1ap_CauseTransport_encode_xer, + S1ap_CauseTransport_decode_uper, + S1ap_CauseTransport_encode_uper, + S1ap_CauseTransport_decode_aper, + S1ap_CauseTransport_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CauseTransport_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CauseTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CauseTransport.h b/lib/asn/asn1c/S1ap-CauseTransport.h new file mode 100644 index 0000000000..57f0f37c98 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CauseTransport.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_CauseTransport; +asn_struct_free_f S1ap_CauseTransport_free; +asn_struct_print_f S1ap_CauseTransport_print; +asn_constr_check_f S1ap_CauseTransport_constraint; +ber_type_decoder_f S1ap_CauseTransport_decode_ber; +der_type_encoder_f S1ap_CauseTransport_encode_der; +xer_type_decoder_f S1ap_CauseTransport_decode_xer; +xer_type_encoder_f S1ap_CauseTransport_encode_xer; +per_type_decoder_f S1ap_CauseTransport_decode_uper; +per_type_encoder_f S1ap_CauseTransport_encode_uper; +per_type_decoder_f S1ap_CauseTransport_decode_aper; +per_type_encoder_f S1ap_CauseTransport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_CauseTransport_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Cdma2000HORequiredIndication.c b/lib/asn/asn1c/S1ap-Cdma2000HORequiredIndication.c new file mode 100644 index 0000000000..d9b0f3997d --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000HORequiredIndication.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000HORequiredIndication.h" + +int +S1ap_Cdma2000HORequiredIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Cdma2000HORequiredIndication_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000HORequiredIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000HORequiredIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000HORequiredIndication_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000HORequiredIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000HORequiredIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000HORequiredIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000HORequiredIndication_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000HORequiredIndication_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000HORequiredIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000HORequiredIndication_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Cdma2000HORequiredIndication_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-Cdma2000HORequiredIndication", + "S1ap-Cdma2000HORequiredIndication", + S1ap_Cdma2000HORequiredIndication_free, + S1ap_Cdma2000HORequiredIndication_print, + S1ap_Cdma2000HORequiredIndication_constraint, + S1ap_Cdma2000HORequiredIndication_decode_ber, + S1ap_Cdma2000HORequiredIndication_encode_der, + S1ap_Cdma2000HORequiredIndication_decode_xer, + S1ap_Cdma2000HORequiredIndication_encode_xer, + S1ap_Cdma2000HORequiredIndication_decode_uper, + S1ap_Cdma2000HORequiredIndication_encode_uper, + S1ap_Cdma2000HORequiredIndication_decode_aper, + S1ap_Cdma2000HORequiredIndication_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Cdma2000HORequiredIndication_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Cdma2000HORequiredIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000HORequiredIndication.h b/lib/asn/asn1c/S1ap-Cdma2000HORequiredIndication.h new file mode 100644 index 0000000000..f65fda7837 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000HORequiredIndication.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cdma2000HOStatus.c b/lib/asn/asn1c/S1ap-Cdma2000HOStatus.c new file mode 100644 index 0000000000..55073acbc8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000HOStatus.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000HOStatus.h" + +int +S1ap_Cdma2000HOStatus_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Cdma2000HOStatus_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000HOStatus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000HOStatus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000HOStatus_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000HOStatus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000HOStatus_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000HOStatus_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000HOStatus_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000HOStatus_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000HOStatus_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000HOStatus_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Cdma2000HOStatus_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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 = { + "S1ap-Cdma2000HOStatus", + "S1ap-Cdma2000HOStatus", + S1ap_Cdma2000HOStatus_free, + S1ap_Cdma2000HOStatus_print, + S1ap_Cdma2000HOStatus_constraint, + S1ap_Cdma2000HOStatus_decode_ber, + S1ap_Cdma2000HOStatus_encode_der, + S1ap_Cdma2000HOStatus_decode_xer, + S1ap_Cdma2000HOStatus_encode_xer, + S1ap_Cdma2000HOStatus_decode_uper, + S1ap_Cdma2000HOStatus_encode_uper, + S1ap_Cdma2000HOStatus_decode_aper, + S1ap_Cdma2000HOStatus_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Cdma2000HOStatus_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Cdma2000HOStatus_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000HOStatus.h b/lib/asn/asn1c/S1ap-Cdma2000HOStatus.h new file mode 100644 index 0000000000..b5ae35aab0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000HOStatus.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cdma2000OneXMEID.c b/lib/asn/asn1c/S1ap-Cdma2000OneXMEID.c new file mode 100644 index 0000000000..b3440ac61a --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXMEID.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000OneXMEID.h" + +int +S1ap_Cdma2000OneXMEID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Cdma2000OneXMEID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000OneXMEID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXMEID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXMEID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXMEID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXMEID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXMEID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXMEID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXMEID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXMEID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000OneXMEID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-Cdma2000OneXMEID", + "S1ap-Cdma2000OneXMEID", + S1ap_Cdma2000OneXMEID_free, + S1ap_Cdma2000OneXMEID_print, + S1ap_Cdma2000OneXMEID_constraint, + S1ap_Cdma2000OneXMEID_decode_ber, + S1ap_Cdma2000OneXMEID_encode_der, + S1ap_Cdma2000OneXMEID_decode_xer, + S1ap_Cdma2000OneXMEID_encode_xer, + S1ap_Cdma2000OneXMEID_decode_uper, + S1ap_Cdma2000OneXMEID_encode_uper, + S1ap_Cdma2000OneXMEID_decode_aper, + S1ap_Cdma2000OneXMEID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000OneXMEID.h b/lib/asn/asn1c/S1ap-Cdma2000OneXMEID.h new file mode 100644 index 0000000000..3f5a15a579 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXMEID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cdma2000OneXMSI.c b/lib/asn/asn1c/S1ap-Cdma2000OneXMSI.c new file mode 100644 index 0000000000..db9d2409f2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXMSI.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000OneXMSI.h" + +int +S1ap_Cdma2000OneXMSI_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Cdma2000OneXMSI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000OneXMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXMSI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXMSI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXMSI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000OneXMSI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-Cdma2000OneXMSI", + "S1ap-Cdma2000OneXMSI", + S1ap_Cdma2000OneXMSI_free, + S1ap_Cdma2000OneXMSI_print, + S1ap_Cdma2000OneXMSI_constraint, + S1ap_Cdma2000OneXMSI_decode_ber, + S1ap_Cdma2000OneXMSI_encode_der, + S1ap_Cdma2000OneXMSI_decode_xer, + S1ap_Cdma2000OneXMSI_encode_xer, + S1ap_Cdma2000OneXMSI_decode_uper, + S1ap_Cdma2000OneXMSI_encode_uper, + S1ap_Cdma2000OneXMSI_decode_aper, + S1ap_Cdma2000OneXMSI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000OneXMSI.h b/lib/asn/asn1c/S1ap-Cdma2000OneXMSI.h new file mode 100644 index 0000000000..bac83ed62b --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXMSI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cdma2000OneXPilot.c b/lib/asn/asn1c/S1ap-Cdma2000OneXPilot.c new file mode 100644 index 0000000000..83bedd69a6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXPilot.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000OneXPilot.h" + +int +S1ap_Cdma2000OneXPilot_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Cdma2000OneXPilot_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000OneXPilot_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXPilot_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXPilot_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXPilot_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXPilot_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXPilot_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXPilot_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXPilot_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXPilot_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000OneXPilot_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-Cdma2000OneXPilot", + "S1ap-Cdma2000OneXPilot", + S1ap_Cdma2000OneXPilot_free, + S1ap_Cdma2000OneXPilot_print, + S1ap_Cdma2000OneXPilot_constraint, + S1ap_Cdma2000OneXPilot_decode_ber, + S1ap_Cdma2000OneXPilot_encode_der, + S1ap_Cdma2000OneXPilot_decode_xer, + S1ap_Cdma2000OneXPilot_encode_xer, + S1ap_Cdma2000OneXPilot_decode_uper, + S1ap_Cdma2000OneXPilot_encode_uper, + S1ap_Cdma2000OneXPilot_decode_aper, + S1ap_Cdma2000OneXPilot_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000OneXPilot.h b/lib/asn/asn1c/S1ap-Cdma2000OneXPilot.h new file mode 100644 index 0000000000..a05060fdfc --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXPilot.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cdma2000OneXRAND.c b/lib/asn/asn1c/S1ap-Cdma2000OneXRAND.c new file mode 100644 index 0000000000..9c8127059c --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXRAND.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000OneXRAND.h" + +int +S1ap_Cdma2000OneXRAND_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Cdma2000OneXRAND_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000OneXRAND_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXRAND_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXRAND_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXRAND_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXRAND_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXRAND_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXRAND_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000OneXRAND_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000OneXRAND_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000OneXRAND_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-Cdma2000OneXRAND", + "S1ap-Cdma2000OneXRAND", + S1ap_Cdma2000OneXRAND_free, + S1ap_Cdma2000OneXRAND_print, + S1ap_Cdma2000OneXRAND_constraint, + S1ap_Cdma2000OneXRAND_decode_ber, + S1ap_Cdma2000OneXRAND_encode_der, + S1ap_Cdma2000OneXRAND_decode_xer, + S1ap_Cdma2000OneXRAND_encode_xer, + S1ap_Cdma2000OneXRAND_decode_uper, + S1ap_Cdma2000OneXRAND_encode_uper, + S1ap_Cdma2000OneXRAND_decode_aper, + S1ap_Cdma2000OneXRAND_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000OneXRAND.h b/lib/asn/asn1c/S1ap-Cdma2000OneXRAND.h new file mode 100644 index 0000000000..1a54bfa676 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXRAND.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.c b/lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.c new file mode 100644 index 0000000000..13350e51f7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000OneXSRVCCInfo.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cdma2000OneXPilot" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_Cdma2000OneXSRVCCInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P21, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_Cdma2000OneXSRVCCInfo = { + "S1ap-Cdma2000OneXSRVCCInfo", + "S1ap-Cdma2000OneXSRVCCInfo", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_Cdma2000OneXSRVCCInfo_1, + 4, /* Elements count */ + &asn_SPC_S1ap_Cdma2000OneXSRVCCInfo_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.h b/lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.h new file mode 100644 index 0000000000..3a6b8d4040 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000OneXSRVCCInfo.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-Cdma2000OneXSRVCCInfo */ +typedef struct S1ap_Cdma2000OneXSRVCCInfo { + S1ap_Cdma2000OneXMEID_t cdma2000OneXMEID; + S1ap_Cdma2000OneXMSI_t cdma2000OneXMSI; + S1ap_Cdma2000OneXPilot_t cdma2000OneXPilot; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_Cdma2000OneXSRVCCInfo_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Cdma2000PDU.c b/lib/asn/asn1c/S1ap-Cdma2000PDU.c new file mode 100644 index 0000000000..9a45d79ccb --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000PDU.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000PDU.h" + +int +S1ap_Cdma2000PDU_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Cdma2000PDU_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000PDU_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000PDU_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000PDU_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000PDU_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000PDU_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000PDU_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000PDU_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000PDU_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000PDU_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000PDU_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-Cdma2000PDU", + "S1ap-Cdma2000PDU", + S1ap_Cdma2000PDU_free, + S1ap_Cdma2000PDU_print, + S1ap_Cdma2000PDU_constraint, + S1ap_Cdma2000PDU_decode_ber, + S1ap_Cdma2000PDU_encode_der, + S1ap_Cdma2000PDU_decode_xer, + S1ap_Cdma2000PDU_encode_xer, + S1ap_Cdma2000PDU_decode_uper, + S1ap_Cdma2000PDU_encode_uper, + S1ap_Cdma2000PDU_decode_aper, + S1ap_Cdma2000PDU_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000PDU.h b/lib/asn/asn1c/S1ap-Cdma2000PDU.h new file mode 100644 index 0000000000..83bb831c4e --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000PDU.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cdma2000RATType.c b/lib/asn/asn1c/S1ap-Cdma2000RATType.c new file mode 100644 index 0000000000..e350076b2b --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000RATType.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000RATType.h" + +int +S1ap_Cdma2000RATType_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Cdma2000RATType_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000RATType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000RATType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000RATType_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000RATType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000RATType_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000RATType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000RATType_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000RATType_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000RATType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000RATType_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Cdma2000RATType_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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 = { + "S1ap-Cdma2000RATType", + "S1ap-Cdma2000RATType", + S1ap_Cdma2000RATType_free, + S1ap_Cdma2000RATType_print, + S1ap_Cdma2000RATType_constraint, + S1ap_Cdma2000RATType_decode_ber, + S1ap_Cdma2000RATType_encode_der, + S1ap_Cdma2000RATType_decode_xer, + S1ap_Cdma2000RATType_encode_xer, + S1ap_Cdma2000RATType_decode_uper, + S1ap_Cdma2000RATType_encode_uper, + S1ap_Cdma2000RATType_decode_aper, + S1ap_Cdma2000RATType_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Cdma2000RATType_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Cdma2000RATType_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000RATType.h b/lib/asn/asn1c/S1ap-Cdma2000RATType.h new file mode 100644 index 0000000000..bc1631cf34 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000RATType.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cdma2000SectorID.c b/lib/asn/asn1c/S1ap-Cdma2000SectorID.c new file mode 100644 index 0000000000..e449af3cf0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000SectorID.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cdma2000SectorID.h" + +int +S1ap_Cdma2000SectorID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Cdma2000SectorID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cdma2000SectorID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000SectorID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cdma2000SectorID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000SectorID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cdma2000SectorID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cdma2000SectorID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cdma2000SectorID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cdma2000SectorID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cdma2000SectorID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cdma2000SectorID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-Cdma2000SectorID", + "S1ap-Cdma2000SectorID", + S1ap_Cdma2000SectorID_free, + S1ap_Cdma2000SectorID_print, + S1ap_Cdma2000SectorID_constraint, + S1ap_Cdma2000SectorID_decode_ber, + S1ap_Cdma2000SectorID_encode_der, + S1ap_Cdma2000SectorID_decode_xer, + S1ap_Cdma2000SectorID_encode_xer, + S1ap_Cdma2000SectorID_decode_uper, + S1ap_Cdma2000SectorID_encode_uper, + S1ap_Cdma2000SectorID_decode_aper, + S1ap_Cdma2000SectorID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cdma2000SectorID.h b/lib/asn/asn1c/S1ap-Cdma2000SectorID.h new file mode 100644 index 0000000000..dea118678e --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cdma2000SectorID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Cell-Size.c b/lib/asn/asn1c/S1ap-Cell-Size.c new file mode 100644 index 0000000000..c2c23cd9fa --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cell-Size.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Cell-Size.h" + +int +S1ap_Cell_Size_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Cell_Size_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Cell_Size_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Cell_Size_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cell_Size_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Cell_Size_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cell_Size_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Cell_Size_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Cell_Size_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Cell_Size_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Cell_Size_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Cell_Size_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Cell_Size_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Cell_Size_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (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 */ +}; +static 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 = { + "S1ap-Cell-Size", + "S1ap-Cell-Size", + S1ap_Cell_Size_free, + S1ap_Cell_Size_print, + S1ap_Cell_Size_constraint, + S1ap_Cell_Size_decode_ber, + S1ap_Cell_Size_encode_der, + S1ap_Cell_Size_decode_xer, + S1ap_Cell_Size_encode_xer, + S1ap_Cell_Size_decode_uper, + S1ap_Cell_Size_encode_uper, + S1ap_Cell_Size_decode_aper, + S1ap_Cell_Size_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Cell_Size_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Cell_Size_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Cell-Size.h b/lib/asn/asn1c/S1ap-Cell-Size.h new file mode 100644 index 0000000000..f936c1c167 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Cell-Size.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_Cell_Size; +asn_struct_free_f S1ap_Cell_Size_free; +asn_struct_print_f S1ap_Cell_Size_print; +asn_constr_check_f S1ap_Cell_Size_constraint; +ber_type_decoder_f S1ap_Cell_Size_decode_ber; +der_type_encoder_f S1ap_Cell_Size_encode_der; +xer_type_decoder_f S1ap_Cell_Size_decode_xer; +xer_type_encoder_f S1ap_Cell_Size_encode_xer; +per_type_decoder_f S1ap_Cell_Size_decode_uper; +per_type_encoder_f S1ap_Cell_Size_encode_uper; +per_type_decoder_f S1ap_Cell_Size_decode_aper; +per_type_encoder_f S1ap_Cell_Size_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_Cell_Size_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellAccessMode.c b/lib/asn/asn1c/S1ap-CellAccessMode.c new file mode 100644 index 0000000000..bc69e9c509 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellAccessMode.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellAccessMode.h" + +int +S1ap_CellAccessMode_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_CellAccessMode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_CellAccessMode_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CellAccessMode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CellAccessMode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CellAccessMode_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CellAccessMode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CellAccessMode_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CellAccessMode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CellAccessMode_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CellAccessMode_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CellAccessMode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CellAccessMode_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CellAccessMode_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 */ +}; +static 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 = { + "S1ap-CellAccessMode", + "S1ap-CellAccessMode", + S1ap_CellAccessMode_free, + S1ap_CellAccessMode_print, + S1ap_CellAccessMode_constraint, + S1ap_CellAccessMode_decode_ber, + S1ap_CellAccessMode_encode_der, + S1ap_CellAccessMode_decode_xer, + S1ap_CellAccessMode_encode_xer, + S1ap_CellAccessMode_decode_uper, + S1ap_CellAccessMode_encode_uper, + S1ap_CellAccessMode_decode_aper, + S1ap_CellAccessMode_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CellAccessMode_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_CellAccessMode_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellAccessMode.h b/lib/asn/asn1c/S1ap-CellAccessMode.h new file mode 100644 index 0000000000..9e1887b771 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellAccessMode.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_CellAccessMode; +asn_struct_free_f S1ap_CellAccessMode_free; +asn_struct_print_f S1ap_CellAccessMode_print; +asn_constr_check_f S1ap_CellAccessMode_constraint; +ber_type_decoder_f S1ap_CellAccessMode_decode_ber; +der_type_encoder_f S1ap_CellAccessMode_encode_der; +xer_type_decoder_f S1ap_CellAccessMode_decode_xer; +xer_type_encoder_f S1ap_CellAccessMode_encode_xer; +per_type_decoder_f S1ap_CellAccessMode_decode_uper; +per_type_encoder_f S1ap_CellAccessMode_encode_uper; +per_type_decoder_f S1ap_CellAccessMode_decode_aper; +per_type_encoder_f S1ap_CellAccessMode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_CellAccessMode_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellBasedMDT.c b/lib/asn/asn1c/S1ap-CellBasedMDT.c new file mode 100644 index 0000000000..d9b61c5dca --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellBasedMDT.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellBasedMDT.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cellIdListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_CellBasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P20, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CellBasedMDT = { + "S1ap-CellBasedMDT", + "S1ap-CellBasedMDT", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CellBasedMDT_1, + 2, /* Elements count */ + &asn_SPC_S1ap_CellBasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellBasedMDT.h b/lib/asn/asn1c/S1ap-CellBasedMDT.h new file mode 100644 index 0000000000..8fbb85d1b6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellBasedMDT.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CellBasedMDT */ +typedef struct S1ap_CellBasedMDT { + S1ap_CellIdListforMDT_t cellIdListforMDT; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CellBasedMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellID-Broadcast-Item.c b/lib/asn/asn1c/S1ap-CellID-Broadcast-Item.c new file mode 100644 index 0000000000..4fe468795d --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellID-Broadcast-Item.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellID-Broadcast-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P18, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CellID_Broadcast_Item = { + "S1ap-CellID-Broadcast-Item", + "S1ap-CellID-Broadcast-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CellID_Broadcast_Item_1, + 2, /* Elements count */ + &asn_SPC_S1ap_CellID_Broadcast_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellID-Broadcast-Item.h b/lib/asn/asn1c/S1ap-CellID-Broadcast-Item.h new file mode 100644 index 0000000000..305527ed35 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellID-Broadcast-Item.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CellID-Broadcast-Item */ +typedef struct S1ap_CellID_Broadcast_Item { + S1ap_EUTRAN_CGI_t eCGI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CellID_Broadcast_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellID-Broadcast.c b/lib/asn/asn1c/S1ap-CellID-Broadcast.c new file mode 100644 index 0000000000..be7f4f3322 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellID-Broadcast.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellID-Broadcast.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CellID_Broadcast_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_CellID_Broadcast_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-CellID-Broadcast", + "S1ap-CellID-Broadcast", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CellID_Broadcast_constr_1, + asn_MBR_S1ap_CellID_Broadcast_1, + 1, /* Single element */ + &asn_SPC_S1ap_CellID_Broadcast_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellID-Broadcast.h b/lib/asn/asn1c/S1ap-CellID-Broadcast.h new file mode 100644 index 0000000000..fcb927b8e7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellID-Broadcast.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-CellID-Broadcast-Item.h" + +#endif /* _S1ap_CellID_Broadcast_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellID-Cancelled-Item.c b/lib/asn/asn1c/S1ap-CellID-Cancelled-Item.c new file mode 100644 index 0000000000..9f543790d8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellID-Cancelled-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellID-Cancelled-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P19, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CellID_Cancelled_Item = { + "S1ap-CellID-Cancelled-Item", + "S1ap-CellID-Cancelled-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CellID_Cancelled_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_CellID_Cancelled_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellID-Cancelled-Item.h b/lib/asn/asn1c/S1ap-CellID-Cancelled-Item.h new file mode 100644 index 0000000000..53b6c4bde7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellID-Cancelled-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CellID-Cancelled-Item */ +typedef struct S1ap_CellID_Cancelled_Item { + S1ap_EUTRAN_CGI_t eCGI; + S1ap_NumberOfBroadcasts_t numberOfBroadcasts; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CellID_Cancelled_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellID-Cancelled.c b/lib/asn/asn1c/S1ap-CellID-Cancelled.c new file mode 100644 index 0000000000..35d71a4005 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellID-Cancelled.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellID-Cancelled.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CellID_Cancelled_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_CellID_Cancelled_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-CellID-Cancelled", + "S1ap-CellID-Cancelled", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CellID_Cancelled_constr_1, + asn_MBR_S1ap_CellID_Cancelled_1, + 1, /* Single element */ + &asn_SPC_S1ap_CellID_Cancelled_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellID-Cancelled.h b/lib/asn/asn1c/S1ap-CellID-Cancelled.h new file mode 100644 index 0000000000..975261ca1a --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellID-Cancelled.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-CellID-Cancelled-Item.h" + +#endif /* _S1ap_CellID_Cancelled_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellIdListforMDT.c b/lib/asn/asn1c/S1ap-CellIdListforMDT.c new file mode 100644 index 0000000000..9b889046d2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellIdListforMDT.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellIdListforMDT.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CellIdListforMDT_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_CellIdListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-CellIdListforMDT", + "S1ap-CellIdListforMDT", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CellIdListforMDT_constr_1, + asn_MBR_S1ap_CellIdListforMDT_1, + 1, /* Single element */ + &asn_SPC_S1ap_CellIdListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellIdListforMDT.h b/lib/asn/asn1c/S1ap-CellIdListforMDT.h new file mode 100644 index 0000000000..c2c4631173 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellIdListforMDT.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-EUTRAN-CGI.h" + +#endif /* _S1ap_CellIdListforMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellIdentity.c b/lib/asn/asn1c/S1ap-CellIdentity.c new file mode 100644 index 0000000000..9e32b126ff --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellIdentity.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellIdentity.h" + +int +S1ap_CellIdentity_constraint(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 == 28LL)) { + /* 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 void +S1ap_CellIdentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_CellIdentity_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_CellIdentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_CellIdentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_CellIdentity_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_CellIdentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_CellIdentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_CellIdentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_CellIdentity_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_CellIdentity_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_CellIdentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_CellIdentity_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_CellIdentity_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28l, 28l } /* (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 = { + "S1ap-CellIdentity", + "S1ap-CellIdentity", + S1ap_CellIdentity_free, + S1ap_CellIdentity_print, + S1ap_CellIdentity_constraint, + S1ap_CellIdentity_decode_ber, + S1ap_CellIdentity_encode_der, + S1ap_CellIdentity_decode_xer, + S1ap_CellIdentity_encode_xer, + S1ap_CellIdentity_decode_uper, + S1ap_CellIdentity_encode_uper, + S1ap_CellIdentity_decode_aper, + S1ap_CellIdentity_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CellIdentity_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellIdentity.h b/lib/asn/asn1c/S1ap-CellIdentity.h new file mode 100644 index 0000000000..9b6673e601 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellIdentity.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-CellTrafficTrace.c b/lib/asn/asn1c/S1ap-CellTrafficTrace.c new file mode 100644 index 0000000000..f2b2ed084a --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellTrafficTrace.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellTrafficTrace.h" + +static int +memb_s1ap_CellTrafficTrace_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_CellTrafficTrace_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_CellTrafficTrace_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_CellTrafficTrace_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_CellTrafficTrace_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_CellTrafficTrace_ies_specs_2 = { + sizeof(struct S1ap_CellTrafficTrace__s1ap_CellTrafficTrace_ies), + offsetof(struct S1ap_CellTrafficTrace__s1ap_CellTrafficTrace_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_CellTrafficTrace_ies_2 = { + "s1ap-CellTrafficTrace-ies", + "s1ap-CellTrafficTrace-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_CellTrafficTrace_ies_tags_2, + sizeof(asn_DEF_s1ap_CellTrafficTrace_ies_tags_2) + /sizeof(asn_DEF_s1ap_CellTrafficTrace_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_CellTrafficTrace_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_CellTrafficTrace_ies_tags_2) + /sizeof(asn_DEF_s1ap_CellTrafficTrace_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_CellTrafficTrace_ies_constr_2, + asn_MBR_s1ap_CellTrafficTrace_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_CellTrafficTrace_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_CellTrafficTrace_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_CellTrafficTrace, s1ap_CellTrafficTrace_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_CellTrafficTrace_ies_2, + memb_s1ap_CellTrafficTrace_ies_constraint_1, + &asn_PER_memb_s1ap_CellTrafficTrace_ies_constr_2, + 0, + "s1ap-CellTrafficTrace-ies" + }, +}; +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 } /* s1ap-CellTrafficTrace-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CellTrafficTrace = { + "S1ap-CellTrafficTrace", + "S1ap-CellTrafficTrace", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CellTrafficTrace_1, + 1, /* Elements count */ + &asn_SPC_S1ap_CellTrafficTrace_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellTrafficTrace.h b/lib/asn/asn1c/S1ap-CellTrafficTrace.h new file mode 100644 index 0000000000..24213782bd --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellTrafficTrace.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_CellTrafficTrace_H_ +#define _S1ap_CellTrafficTrace_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-CellTrafficTrace */ +typedef struct S1ap_CellTrafficTrace { + struct S1ap_CellTrafficTrace__s1ap_CellTrafficTrace_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_CellTrafficTrace_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_CellTrafficTrace_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CellType.c b/lib/asn/asn1c/S1ap-CellType.c new file mode 100644 index 0000000000..f23058091e --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellType.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CellType.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P22, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CellType = { + "S1ap-CellType", + "S1ap-CellType", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CellType_1, + 2, /* Elements count */ + &asn_SPC_S1ap_CellType_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CellType.h b/lib/asn/asn1c/S1ap-CellType.h new file mode 100644 index 0000000000..c4da644ecf --- /dev/null +++ b/lib/asn/asn1c/S1ap-CellType.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CellType */ +typedef struct S1ap_CellType { + S1ap_Cell_Size_t cell_Size; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CellType_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.c b/lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.c new file mode 100644 index 0000000000..6bbd96dbde --- /dev/null +++ b/lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CompletedCellinEAI-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P30, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CompletedCellinEAI_Item = { + "S1ap-CompletedCellinEAI-Item", + "S1ap-CompletedCellinEAI-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CompletedCellinEAI_Item_1, + 2, /* Elements count */ + &asn_SPC_S1ap_CompletedCellinEAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.h b/lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.h new file mode 100644 index 0000000000..09e79e09b8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CompletedCellinEAI-Item.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CompletedCellinEAI-Item */ +typedef struct S1ap_CompletedCellinEAI_Item { + S1ap_EUTRAN_CGI_t eCGI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CompletedCellinEAI_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CompletedCellinEAI.c b/lib/asn/asn1c/S1ap-CompletedCellinEAI.c new file mode 100644 index 0000000000..ab337f402b --- /dev/null +++ b/lib/asn/asn1c/S1ap-CompletedCellinEAI.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CompletedCellinEAI.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CompletedCellinEAI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_CompletedCellinEAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-CompletedCellinEAI", + "S1ap-CompletedCellinEAI", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CompletedCellinEAI_constr_1, + asn_MBR_S1ap_CompletedCellinEAI_1, + 1, /* Single element */ + &asn_SPC_S1ap_CompletedCellinEAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CompletedCellinEAI.h b/lib/asn/asn1c/S1ap-CompletedCellinEAI.h new file mode 100644 index 0000000000..a8c944b1e0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CompletedCellinEAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-CompletedCellinEAI-Item.h" + +#endif /* _S1ap_CompletedCellinEAI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.c b/lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.c new file mode 100644 index 0000000000..62ff146d4c --- /dev/null +++ b/lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CompletedCellinTAI-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P64, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CompletedCellinTAI_Item = { + "S1ap-CompletedCellinTAI-Item", + "S1ap-CompletedCellinTAI-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CompletedCellinTAI_Item_1, + 2, /* Elements count */ + &asn_SPC_S1ap_CompletedCellinTAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.h b/lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.h new file mode 100644 index 0000000000..8115d3c462 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CompletedCellinTAI-Item.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-CompletedCellinTAI-Item */ +typedef struct S1ap_CompletedCellinTAI_Item { + S1ap_EUTRAN_CGI_t eCGI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CompletedCellinTAI_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CompletedCellinTAI.c b/lib/asn/asn1c/S1ap-CompletedCellinTAI.c new file mode 100644 index 0000000000..26971b5b86 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CompletedCellinTAI.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CompletedCellinTAI.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CompletedCellinTAI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_CompletedCellinTAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-CompletedCellinTAI", + "S1ap-CompletedCellinTAI", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CompletedCellinTAI_constr_1, + asn_MBR_S1ap_CompletedCellinTAI_1, + 1, /* Single element */ + &asn_SPC_S1ap_CompletedCellinTAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CompletedCellinTAI.h b/lib/asn/asn1c/S1ap-CompletedCellinTAI.h new file mode 100644 index 0000000000..d804677acd --- /dev/null +++ b/lib/asn/asn1c/S1ap-CompletedCellinTAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-CompletedCellinTAI-Item.h" + +#endif /* _S1ap_CompletedCellinTAI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ConcurrentWarningMessageIndicator.c b/lib/asn/asn1c/S1ap-ConcurrentWarningMessageIndicator.c new file mode 100644 index 0000000000..d83e7f1e94 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ConcurrentWarningMessageIndicator.c @@ -0,0 +1,164 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ConcurrentWarningMessageIndicator.h" + +int +S1ap_ConcurrentWarningMessageIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_ConcurrentWarningMessageIndicator_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ConcurrentWarningMessageIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ConcurrentWarningMessageIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ConcurrentWarningMessageIndicator_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ConcurrentWarningMessageIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ConcurrentWarningMessageIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ConcurrentWarningMessageIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ConcurrentWarningMessageIndicator_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ConcurrentWarningMessageIndicator_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ConcurrentWarningMessageIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ConcurrentWarningMessageIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ConcurrentWarningMessageIndicator_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 0, 0, 0l, 0l } /* (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 = { + "S1ap-ConcurrentWarningMessageIndicator", + "S1ap-ConcurrentWarningMessageIndicator", + S1ap_ConcurrentWarningMessageIndicator_free, + S1ap_ConcurrentWarningMessageIndicator_print, + S1ap_ConcurrentWarningMessageIndicator_constraint, + S1ap_ConcurrentWarningMessageIndicator_decode_ber, + S1ap_ConcurrentWarningMessageIndicator_encode_der, + S1ap_ConcurrentWarningMessageIndicator_decode_xer, + S1ap_ConcurrentWarningMessageIndicator_encode_xer, + S1ap_ConcurrentWarningMessageIndicator_decode_uper, + S1ap_ConcurrentWarningMessageIndicator_encode_uper, + S1ap_ConcurrentWarningMessageIndicator_decode_aper, + S1ap_ConcurrentWarningMessageIndicator_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ConcurrentWarningMessageIndicator_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_ConcurrentWarningMessageIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ConcurrentWarningMessageIndicator.h b/lib/asn/asn1c/S1ap-ConcurrentWarningMessageIndicator.h new file mode 100644 index 0000000000..9619ab9577 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ConcurrentWarningMessageIndicator.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Correlation-ID.c b/lib/asn/asn1c/S1ap-Correlation-ID.c new file mode 100644 index 0000000000..1bf91ff686 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Correlation-ID.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Correlation-ID.h" + +int +S1ap_Correlation_ID_constraint(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 == 4LL)) { + /* 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 void +S1ap_Correlation_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Correlation_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Correlation_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Correlation_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Correlation_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Correlation_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Correlation_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Correlation_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Correlation_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Correlation_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Correlation_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Correlation_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Correlation_ID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (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 = { + "S1ap-Correlation-ID", + "S1ap-Correlation-ID", + S1ap_Correlation_ID_free, + S1ap_Correlation_ID_print, + S1ap_Correlation_ID_constraint, + S1ap_Correlation_ID_decode_ber, + S1ap_Correlation_ID_encode_der, + S1ap_Correlation_ID_decode_xer, + S1ap_Correlation_ID_encode_xer, + S1ap_Correlation_ID_decode_uper, + S1ap_Correlation_ID_encode_uper, + S1ap_Correlation_ID_decode_aper, + S1ap_Correlation_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Correlation_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Correlation-ID.h b/lib/asn/asn1c/S1ap-Correlation-ID.h new file mode 100644 index 0000000000..52361ac169 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Correlation-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Criticality.c b/lib/asn/asn1c/S1ap-Criticality.c new file mode 100644 index 0000000000..37df9fc44d --- /dev/null +++ b/lib/asn/asn1c/S1ap-Criticality.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Criticality.h" + +int +S1ap_Criticality_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Criticality_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Criticality_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Criticality_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Criticality_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Criticality_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Criticality_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Criticality_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Criticality_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Criticality_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Criticality_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Criticality_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Criticality_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Criticality_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (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) */ +}; +static 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 = { + "S1ap-Criticality", + "S1ap-Criticality", + S1ap_Criticality_free, + S1ap_Criticality_print, + S1ap_Criticality_constraint, + S1ap_Criticality_decode_ber, + S1ap_Criticality_encode_der, + S1ap_Criticality_decode_xer, + S1ap_Criticality_encode_xer, + S1ap_Criticality_decode_uper, + S1ap_Criticality_encode_uper, + S1ap_Criticality_decode_aper, + S1ap_Criticality_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Criticality_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Criticality_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Criticality.h b/lib/asn/asn1c/S1ap-Criticality.h new file mode 100644 index 0000000000..b72c34fece --- /dev/null +++ b/lib/asn/asn1c/S1ap-Criticality.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_Criticality; +asn_struct_free_f S1ap_Criticality_free; +asn_struct_print_f S1ap_Criticality_print; +asn_constr_check_f S1ap_Criticality_constraint; +ber_type_decoder_f S1ap_Criticality_decode_ber; +der_type_encoder_f S1ap_Criticality_encode_der; +xer_type_decoder_f S1ap_Criticality_decode_xer; +xer_type_encoder_f S1ap_Criticality_encode_xer; +per_type_decoder_f S1ap_Criticality_decode_uper; +per_type_encoder_f S1ap_Criticality_encode_uper; +per_type_decoder_f S1ap_Criticality_decode_aper; +per_type_encoder_f S1ap_Criticality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_Criticality_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CriticalityDiagnostics-IE-List.c b/lib/asn/asn1c/S1ap-CriticalityDiagnostics-IE-List.c new file mode 100644 index 0000000000..60b86e5bba --- /dev/null +++ b/lib/asn/asn1c/S1ap-CriticalityDiagnostics-IE-List.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CriticalityDiagnostics-IE-List.h" + +static asn_per_constraints_t asn_PER_type_S1ap_CriticalityDiagnostics_IE_List_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static 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_S1ap_IE_Item, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_CriticalityDiagnostics_IE_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-CriticalityDiagnostics-IE-List", + "S1ap-CriticalityDiagnostics-IE-List", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_CriticalityDiagnostics_IE_List_constr_1, + asn_MBR_S1ap_CriticalityDiagnostics_IE_List_1, + 1, /* Single element */ + &asn_SPC_S1ap_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CriticalityDiagnostics-IE-List.h b/lib/asn/asn1c/S1ap-CriticalityDiagnostics-IE-List.h new file mode 100644 index 0000000000..b41eee27f2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CriticalityDiagnostics-IE-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_S1ap_IE_Item; + +/* S1ap-CriticalityDiagnostics-IE-List */ +typedef struct S1ap_CriticalityDiagnostics_IE_List { + A_SEQUENCE_OF(struct S1ap_CriticalityDiagnostics_S1ap_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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-CriticalityDiagnostics-S1ap-IE-Item.h" + +#endif /* _S1ap_CriticalityDiagnostics_IE_List_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CriticalityDiagnostics-S1ap-IE-Item.c b/lib/asn/asn1c/S1ap-CriticalityDiagnostics-S1ap-IE-Item.c new file mode 100644 index 0000000000..d92fa04ddf --- /dev/null +++ b/lib/asn/asn1c/S1ap-CriticalityDiagnostics-S1ap-IE-Item.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CriticalityDiagnostics-S1ap-IE-Item.h" + +static asn_TYPE_member_t asn_MBR_S1ap_CriticalityDiagnostics_S1ap_IE_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_CriticalityDiagnostics_S1ap_IE_Item, iECriticality), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iECriticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_CriticalityDiagnostics_S1ap_IE_Item, iE_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolIE_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_CriticalityDiagnostics_S1ap_IE_Item, typeOfError), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_TypeOfError, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "typeOfError" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_CriticalityDiagnostics_S1ap_IE_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P27, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_S1ap_CriticalityDiagnostics_S1ap_IE_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1ap_CriticalityDiagnostics_S1ap_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1ap_CriticalityDiagnostics_S1ap_IE_Item_specs_1 = { + sizeof(struct S1ap_CriticalityDiagnostics_S1ap_IE_Item), + offsetof(struct S1ap_CriticalityDiagnostics_S1ap_IE_Item, _asn_ctx), + asn_MAP_S1ap_CriticalityDiagnostics_S1ap_IE_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1ap_CriticalityDiagnostics_S1ap_IE_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item = { + "S1ap-CriticalityDiagnostics-S1ap-IE-Item", + "S1ap-CriticalityDiagnostics-S1ap-IE-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item_tags_1, + sizeof(asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item_tags_1) + /sizeof(asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item_tags_1[0]), /* 1 */ + asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item_tags_1) + /sizeof(asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_S1ap_CriticalityDiagnostics_S1ap_IE_Item_1, + 4, /* Elements count */ + &asn_SPC_S1ap_CriticalityDiagnostics_S1ap_IE_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CriticalityDiagnostics-S1ap-IE-Item.h b/lib/asn/asn1c/S1ap-CriticalityDiagnostics-S1ap-IE-Item.h new file mode 100644 index 0000000000..7e98819eee --- /dev/null +++ b/lib/asn/asn1c/S1ap-CriticalityDiagnostics-S1ap-IE-Item.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_CriticalityDiagnostics_S1ap_IE_Item_H_ +#define _S1ap_CriticalityDiagnostics_S1ap_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 ProtocolExtensionContainer; + +/* S1ap-CriticalityDiagnostics-S1ap-IE-Item */ +typedef struct S1ap_CriticalityDiagnostics_S1ap_IE_Item { + S1ap_Criticality_t iECriticality; + S1ap_ProtocolIE_ID_t iE_ID; + S1ap_TypeOfError_t typeOfError; + struct 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_S1ap_IE_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_CriticalityDiagnostics_S1ap_IE_Item; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CriticalityDiagnostics_S1ap_IE_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-CriticalityDiagnostics.c b/lib/asn/asn1c/S1ap-CriticalityDiagnostics.c new file mode 100644 index 0000000000..d00dfee517 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CriticalityDiagnostics.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-CriticalityDiagnostics.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iEsCriticalityDiagnostics" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_CriticalityDiagnostics, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P26, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_CriticalityDiagnostics = { + "S1ap-CriticalityDiagnostics", + "S1ap-CriticalityDiagnostics", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_CriticalityDiagnostics_1, + 5, /* Elements count */ + &asn_SPC_S1ap_CriticalityDiagnostics_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-CriticalityDiagnostics.h b/lib/asn/asn1c/S1ap-CriticalityDiagnostics.h new file mode 100644 index 0000000000..426d927f75 --- /dev/null +++ b/lib/asn/asn1c/S1ap-CriticalityDiagnostics.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "S1ap-CriticalityDiagnostics-IE-List.h" +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_CriticalityDiagnostics_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-DL-Forwarding.c b/lib/asn/asn1c/S1ap-DL-Forwarding.c new file mode 100644 index 0000000000..9d6f581759 --- /dev/null +++ b/lib/asn/asn1c/S1ap-DL-Forwarding.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-DL-Forwarding.h" + +int +S1ap_DL_Forwarding_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_DL_Forwarding_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_DL_Forwarding_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_DL_Forwarding_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_DL_Forwarding_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_DL_Forwarding_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_DL_Forwarding_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_DL_Forwarding_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_DL_Forwarding_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_DL_Forwarding_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_DL_Forwarding_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_DL_Forwarding_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_DL_Forwarding_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 */ +}; +static 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 = { + "S1ap-DL-Forwarding", + "S1ap-DL-Forwarding", + S1ap_DL_Forwarding_free, + S1ap_DL_Forwarding_print, + S1ap_DL_Forwarding_constraint, + S1ap_DL_Forwarding_decode_ber, + S1ap_DL_Forwarding_encode_der, + S1ap_DL_Forwarding_decode_xer, + S1ap_DL_Forwarding_encode_xer, + S1ap_DL_Forwarding_decode_uper, + S1ap_DL_Forwarding_encode_uper, + S1ap_DL_Forwarding_decode_aper, + S1ap_DL_Forwarding_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_DL_Forwarding_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_DL_Forwarding_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-DL-Forwarding.h b/lib/asn/asn1c/S1ap-DL-Forwarding.h new file mode 100644 index 0000000000..ffc188263a --- /dev/null +++ b/lib/asn/asn1c/S1ap-DL-Forwarding.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_DL_Forwarding; +asn_struct_free_f S1ap_DL_Forwarding_free; +asn_struct_print_f S1ap_DL_Forwarding_print; +asn_constr_check_f S1ap_DL_Forwarding_constraint; +ber_type_decoder_f S1ap_DL_Forwarding_decode_ber; +der_type_encoder_f S1ap_DL_Forwarding_encode_der; +xer_type_decoder_f S1ap_DL_Forwarding_decode_xer; +xer_type_encoder_f S1ap_DL_Forwarding_encode_xer; +per_type_decoder_f S1ap_DL_Forwarding_decode_uper; +per_type_encoder_f S1ap_DL_Forwarding_encode_uper; +per_type_decoder_f S1ap_DL_Forwarding_decode_aper; +per_type_encoder_f S1ap_DL_Forwarding_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_DL_Forwarding_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Data-Forwarding-Not-Possible.c b/lib/asn/asn1c/S1ap-Data-Forwarding-Not-Possible.c new file mode 100644 index 0000000000..b5316802cb --- /dev/null +++ b/lib/asn/asn1c/S1ap-Data-Forwarding-Not-Possible.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Data-Forwarding-Not-Possible.h" + +int +S1ap_Data_Forwarding_Not_Possible_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Data_Forwarding_Not_Possible_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Data_Forwarding_Not_Possible_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Data_Forwarding_Not_Possible_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Data_Forwarding_Not_Possible_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Data_Forwarding_Not_Possible_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Data_Forwarding_Not_Possible_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Data_Forwarding_Not_Possible_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Data_Forwarding_Not_Possible_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Data_Forwarding_Not_Possible_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Data_Forwarding_Not_Possible_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Data_Forwarding_Not_Possible_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Data_Forwarding_Not_Possible_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-Data-Forwarding-Not-Possible", + "S1ap-Data-Forwarding-Not-Possible", + S1ap_Data_Forwarding_Not_Possible_free, + S1ap_Data_Forwarding_Not_Possible_print, + S1ap_Data_Forwarding_Not_Possible_constraint, + S1ap_Data_Forwarding_Not_Possible_decode_ber, + S1ap_Data_Forwarding_Not_Possible_encode_der, + S1ap_Data_Forwarding_Not_Possible_decode_xer, + S1ap_Data_Forwarding_Not_Possible_encode_xer, + S1ap_Data_Forwarding_Not_Possible_decode_uper, + S1ap_Data_Forwarding_Not_Possible_encode_uper, + S1ap_Data_Forwarding_Not_Possible_decode_aper, + S1ap_Data_Forwarding_Not_Possible_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Data_Forwarding_Not_Possible_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Data_Forwarding_Not_Possible_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Data-Forwarding-Not-Possible.h b/lib/asn/asn1c/S1ap-Data-Forwarding-Not-Possible.h new file mode 100644 index 0000000000..e18569938a --- /dev/null +++ b/lib/asn/asn1c/S1ap-Data-Forwarding-Not-Possible.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-DataCodingScheme.c b/lib/asn/asn1c/S1ap-DataCodingScheme.c new file mode 100644 index 0000000000..fbe0793bba --- /dev/null +++ b/lib/asn/asn1c/S1ap-DataCodingScheme.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-DataCodingScheme.h" + +int +S1ap_DataCodingScheme_constraint(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 == 8LL)) { + /* 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 void +S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_DataCodingScheme_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_DataCodingScheme_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_DataCodingScheme_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_DataCodingScheme_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_DataCodingScheme_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_DataCodingScheme_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_DataCodingScheme_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_DataCodingScheme_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_DataCodingScheme_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_DataCodingScheme_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_DataCodingScheme_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_DataCodingScheme_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (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 = { + "S1ap-DataCodingScheme", + "S1ap-DataCodingScheme", + S1ap_DataCodingScheme_free, + S1ap_DataCodingScheme_print, + S1ap_DataCodingScheme_constraint, + S1ap_DataCodingScheme_decode_ber, + S1ap_DataCodingScheme_encode_der, + S1ap_DataCodingScheme_decode_xer, + S1ap_DataCodingScheme_encode_xer, + S1ap_DataCodingScheme_decode_uper, + S1ap_DataCodingScheme_encode_uper, + S1ap_DataCodingScheme_decode_aper, + S1ap_DataCodingScheme_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_DataCodingScheme_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-DataCodingScheme.h b/lib/asn/asn1c/S1ap-DataCodingScheme.h new file mode 100644 index 0000000000..72b028e1b9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-DataCodingScheme.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-DeactivateTrace.c b/lib/asn/asn1c/S1ap-DeactivateTrace.c new file mode 100644 index 0000000000..8ccf52ad30 --- /dev/null +++ b/lib/asn/asn1c/S1ap-DeactivateTrace.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-DeactivateTrace.h" + +static int +memb_s1ap_DeactivateTrace_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_DeactivateTrace_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_DeactivateTrace_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_DeactivateTrace_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_DeactivateTrace_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_DeactivateTrace_ies_specs_2 = { + sizeof(struct S1ap_DeactivateTrace__s1ap_DeactivateTrace_ies), + offsetof(struct S1ap_DeactivateTrace__s1ap_DeactivateTrace_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_DeactivateTrace_ies_2 = { + "s1ap-DeactivateTrace-ies", + "s1ap-DeactivateTrace-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_DeactivateTrace_ies_tags_2, + sizeof(asn_DEF_s1ap_DeactivateTrace_ies_tags_2) + /sizeof(asn_DEF_s1ap_DeactivateTrace_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_DeactivateTrace_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_DeactivateTrace_ies_tags_2) + /sizeof(asn_DEF_s1ap_DeactivateTrace_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_DeactivateTrace_ies_constr_2, + asn_MBR_s1ap_DeactivateTrace_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_DeactivateTrace_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_DeactivateTrace_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_DeactivateTrace, s1ap_DeactivateTrace_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_DeactivateTrace_ies_2, + memb_s1ap_DeactivateTrace_ies_constraint_1, + &asn_PER_memb_s1ap_DeactivateTrace_ies_constr_2, + 0, + "s1ap-DeactivateTrace-ies" + }, +}; +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 } /* s1ap-DeactivateTrace-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_DeactivateTrace = { + "S1ap-DeactivateTrace", + "S1ap-DeactivateTrace", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_DeactivateTrace_1, + 1, /* Elements count */ + &asn_SPC_S1ap_DeactivateTrace_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-DeactivateTrace.h b/lib/asn/asn1c/S1ap-DeactivateTrace.h new file mode 100644 index 0000000000..67ababdacf --- /dev/null +++ b/lib/asn/asn1c/S1ap-DeactivateTrace.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_DeactivateTrace_H_ +#define _S1ap_DeactivateTrace_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-DeactivateTrace */ +typedef struct S1ap_DeactivateTrace { + struct S1ap_DeactivateTrace__s1ap_DeactivateTrace_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_DeactivateTrace_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_DeactivateTrace_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Direct-Forwarding-Path-Availability.c b/lib/asn/asn1c/S1ap-Direct-Forwarding-Path-Availability.c new file mode 100644 index 0000000000..b06f972b1a --- /dev/null +++ b/lib/asn/asn1c/S1ap-Direct-Forwarding-Path-Availability.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Direct-Forwarding-Path-Availability.h" + +int +S1ap_Direct_Forwarding_Path_Availability_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Direct_Forwarding_Path_Availability_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Direct_Forwarding_Path_Availability_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Direct_Forwarding_Path_Availability_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Direct_Forwarding_Path_Availability_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Direct_Forwarding_Path_Availability_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Direct_Forwarding_Path_Availability_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Direct_Forwarding_Path_Availability_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Direct_Forwarding_Path_Availability_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Direct_Forwarding_Path_Availability_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Direct_Forwarding_Path_Availability_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Direct_Forwarding_Path_Availability_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Direct_Forwarding_Path_Availability_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-Direct-Forwarding-Path-Availability", + "S1ap-Direct-Forwarding-Path-Availability", + S1ap_Direct_Forwarding_Path_Availability_free, + S1ap_Direct_Forwarding_Path_Availability_print, + S1ap_Direct_Forwarding_Path_Availability_constraint, + S1ap_Direct_Forwarding_Path_Availability_decode_ber, + S1ap_Direct_Forwarding_Path_Availability_encode_der, + S1ap_Direct_Forwarding_Path_Availability_decode_xer, + S1ap_Direct_Forwarding_Path_Availability_encode_xer, + S1ap_Direct_Forwarding_Path_Availability_decode_uper, + S1ap_Direct_Forwarding_Path_Availability_encode_uper, + S1ap_Direct_Forwarding_Path_Availability_decode_aper, + S1ap_Direct_Forwarding_Path_Availability_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Direct_Forwarding_Path_Availability_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Direct_Forwarding_Path_Availability_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Direct-Forwarding-Path-Availability.h b/lib/asn/asn1c/S1ap-Direct-Forwarding-Path-Availability.h new file mode 100644 index 0000000000..bb4137449e --- /dev/null +++ b/lib/asn/asn1c/S1ap-Direct-Forwarding-Path-Availability.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-DownlinkNASTransport.c b/lib/asn/asn1c/S1ap-DownlinkNASTransport.c new file mode 100644 index 0000000000..e68aeb424e --- /dev/null +++ b/lib/asn/asn1c/S1ap-DownlinkNASTransport.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-DownlinkNASTransport.h" + +static int +memb_s1ap_DownlinkNASTransport_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_DownlinkNASTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_DownlinkNASTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_DownlinkNASTransport_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_DownlinkNASTransport_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_DownlinkNASTransport_ies_specs_2 = { + sizeof(struct S1ap_DownlinkNASTransport__s1ap_DownlinkNASTransport_ies), + offsetof(struct S1ap_DownlinkNASTransport__s1ap_DownlinkNASTransport_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_DownlinkNASTransport_ies_2 = { + "s1ap-DownlinkNASTransport-ies", + "s1ap-DownlinkNASTransport-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_DownlinkNASTransport_ies_tags_2, + sizeof(asn_DEF_s1ap_DownlinkNASTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_DownlinkNASTransport_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_DownlinkNASTransport_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_DownlinkNASTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_DownlinkNASTransport_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_DownlinkNASTransport_ies_constr_2, + asn_MBR_s1ap_DownlinkNASTransport_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_DownlinkNASTransport_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_DownlinkNASTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_DownlinkNASTransport, s1ap_DownlinkNASTransport_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_DownlinkNASTransport_ies_2, + memb_s1ap_DownlinkNASTransport_ies_constraint_1, + &asn_PER_memb_s1ap_DownlinkNASTransport_ies_constr_2, + 0, + "s1ap-DownlinkNASTransport-ies" + }, +}; +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 } /* s1ap-DownlinkNASTransport-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_DownlinkNASTransport = { + "S1ap-DownlinkNASTransport", + "S1ap-DownlinkNASTransport", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_DownlinkNASTransport_1, + 1, /* Elements count */ + &asn_SPC_S1ap_DownlinkNASTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-DownlinkNASTransport.h b/lib/asn/asn1c/S1ap-DownlinkNASTransport.h new file mode 100644 index 0000000000..f365f8f676 --- /dev/null +++ b/lib/asn/asn1c/S1ap-DownlinkNASTransport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_DownlinkNASTransport_H_ +#define _S1ap_DownlinkNASTransport_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-DownlinkNASTransport */ +typedef struct S1ap_DownlinkNASTransport { + struct S1ap_DownlinkNASTransport__s1ap_DownlinkNASTransport_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_DownlinkNASTransport_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_DownlinkNASTransport_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-DownlinkNonUEAssociatedLPPaTransport.c b/lib/asn/asn1c/S1ap-DownlinkNonUEAssociatedLPPaTransport.c new file mode 100644 index 0000000000..ef0e37532e --- /dev/null +++ b/lib/asn/asn1c/S1ap-DownlinkNonUEAssociatedLPPaTransport.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-DownlinkNonUEAssociatedLPPaTransport.h" + +static int +memb_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_specs_2 = { + sizeof(struct S1ap_DownlinkNonUEAssociatedLPPaTransport__s1ap_DownlinkNonUEAssociatedLPPaTransport_ies), + offsetof(struct S1ap_DownlinkNonUEAssociatedLPPaTransport__s1ap_DownlinkNonUEAssociatedLPPaTransport_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_2 = { + "s1ap-DownlinkNonUEAssociatedLPPaTransport-ies", + "s1ap-DownlinkNonUEAssociatedLPPaTransport-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_tags_2, + sizeof(asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_constr_2, + asn_MBR_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_DownlinkNonUEAssociatedLPPaTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_DownlinkNonUEAssociatedLPPaTransport, s1ap_DownlinkNonUEAssociatedLPPaTransport_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_2, + memb_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_constraint_1, + &asn_PER_memb_s1ap_DownlinkNonUEAssociatedLPPaTransport_ies_constr_2, + 0, + "s1ap-DownlinkNonUEAssociatedLPPaTransport-ies" + }, +}; +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 } /* s1ap-DownlinkNonUEAssociatedLPPaTransport-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_DownlinkNonUEAssociatedLPPaTransport = { + "S1ap-DownlinkNonUEAssociatedLPPaTransport", + "S1ap-DownlinkNonUEAssociatedLPPaTransport", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_DownlinkNonUEAssociatedLPPaTransport_1, + 1, /* Elements count */ + &asn_SPC_S1ap_DownlinkNonUEAssociatedLPPaTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-DownlinkNonUEAssociatedLPPaTransport.h b/lib/asn/asn1c/S1ap-DownlinkNonUEAssociatedLPPaTransport.h new file mode 100644 index 0000000000..f16e440a15 --- /dev/null +++ b/lib/asn/asn1c/S1ap-DownlinkNonUEAssociatedLPPaTransport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_DownlinkNonUEAssociatedLPPaTransport_H_ +#define _S1ap_DownlinkNonUEAssociatedLPPaTransport_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-DownlinkNonUEAssociatedLPPaTransport */ +typedef struct S1ap_DownlinkNonUEAssociatedLPPaTransport { + struct S1ap_DownlinkNonUEAssociatedLPPaTransport__s1ap_DownlinkNonUEAssociatedLPPaTransport_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_DownlinkNonUEAssociatedLPPaTransport_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_DownlinkNonUEAssociatedLPPaTransport_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-DownlinkS1cdma2000tunneling.c b/lib/asn/asn1c/S1ap-DownlinkS1cdma2000tunneling.c new file mode 100644 index 0000000000..fbbb18f5f7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-DownlinkS1cdma2000tunneling.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-DownlinkS1cdma2000tunneling.h" + +static int +memb_s1ap_DownlinkS1cdma2000tunneling_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_DownlinkS1cdma2000tunneling_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_DownlinkS1cdma2000tunneling_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_DownlinkS1cdma2000tunneling_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_DownlinkS1cdma2000tunneling_ies_specs_2 = { + sizeof(struct S1ap_DownlinkS1cdma2000tunneling__s1ap_DownlinkS1cdma2000tunneling_ies), + offsetof(struct S1ap_DownlinkS1cdma2000tunneling__s1ap_DownlinkS1cdma2000tunneling_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_2 = { + "s1ap-DownlinkS1cdma2000tunneling-ies", + "s1ap-DownlinkS1cdma2000tunneling-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_tags_2, + sizeof(asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_tags_2) + /sizeof(asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_tags_2) + /sizeof(asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_DownlinkS1cdma2000tunneling_ies_constr_2, + asn_MBR_s1ap_DownlinkS1cdma2000tunneling_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_DownlinkS1cdma2000tunneling_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_DownlinkS1cdma2000tunneling_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_DownlinkS1cdma2000tunneling, s1ap_DownlinkS1cdma2000tunneling_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_DownlinkS1cdma2000tunneling_ies_2, + memb_s1ap_DownlinkS1cdma2000tunneling_ies_constraint_1, + &asn_PER_memb_s1ap_DownlinkS1cdma2000tunneling_ies_constr_2, + 0, + "s1ap-DownlinkS1cdma2000tunneling-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_DownlinkS1cdma2000tunneling_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1ap_DownlinkS1cdma2000tunneling_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* s1ap-DownlinkS1cdma2000tunneling-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1ap_DownlinkS1cdma2000tunneling_specs_1 = { + sizeof(struct S1ap_DownlinkS1cdma2000tunneling), + offsetof(struct S1ap_DownlinkS1cdma2000tunneling, _asn_ctx), + asn_MAP_S1ap_DownlinkS1cdma2000tunneling_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_DownlinkS1cdma2000tunneling = { + "S1ap-DownlinkS1cdma2000tunneling", + "S1ap-DownlinkS1cdma2000tunneling", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_DownlinkS1cdma2000tunneling_tags_1, + sizeof(asn_DEF_S1ap_DownlinkS1cdma2000tunneling_tags_1) + /sizeof(asn_DEF_S1ap_DownlinkS1cdma2000tunneling_tags_1[0]), /* 1 */ + asn_DEF_S1ap_DownlinkS1cdma2000tunneling_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_DownlinkS1cdma2000tunneling_tags_1) + /sizeof(asn_DEF_S1ap_DownlinkS1cdma2000tunneling_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_S1ap_DownlinkS1cdma2000tunneling_1, + 1, /* Elements count */ + &asn_SPC_S1ap_DownlinkS1cdma2000tunneling_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-DownlinkS1cdma2000tunneling.h b/lib/asn/asn1c/S1ap-DownlinkS1cdma2000tunneling.h new file mode 100644 index 0000000000..a1fe176ea3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-DownlinkS1cdma2000tunneling.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_DownlinkS1cdma2000tunneling_H_ +#define _S1ap_DownlinkS1cdma2000tunneling_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-DownlinkS1cdma2000tunneling */ +typedef struct S1ap_DownlinkS1cdma2000tunneling { + struct S1ap_DownlinkS1cdma2000tunneling__s1ap_DownlinkS1cdma2000tunneling_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_DownlinkS1cdma2000tunneling_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1ap_DownlinkS1cdma2000tunneling_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_DownlinkS1cdma2000tunneling; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_DownlinkS1cdma2000tunneling_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-DownlinkUEAssociatedLPPaTransport.c b/lib/asn/asn1c/S1ap-DownlinkUEAssociatedLPPaTransport.c new file mode 100644 index 0000000000..ca2be07051 --- /dev/null +++ b/lib/asn/asn1c/S1ap-DownlinkUEAssociatedLPPaTransport.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-DownlinkUEAssociatedLPPaTransport.h" + +static int +memb_s1ap_DownlinkUEAssociatedLPPaTransport_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_DownlinkUEAssociatedLPPaTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_DownlinkUEAssociatedLPPaTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_DownlinkUEAssociatedLPPaTransport_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_DownlinkUEAssociatedLPPaTransport_ies_specs_2 = { + sizeof(struct S1ap_DownlinkUEAssociatedLPPaTransport__s1ap_DownlinkUEAssociatedLPPaTransport_ies), + offsetof(struct S1ap_DownlinkUEAssociatedLPPaTransport__s1ap_DownlinkUEAssociatedLPPaTransport_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_2 = { + "s1ap-DownlinkUEAssociatedLPPaTransport-ies", + "s1ap-DownlinkUEAssociatedLPPaTransport-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_tags_2, + sizeof(asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_DownlinkUEAssociatedLPPaTransport_ies_constr_2, + asn_MBR_s1ap_DownlinkUEAssociatedLPPaTransport_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_DownlinkUEAssociatedLPPaTransport_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_DownlinkUEAssociatedLPPaTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_DownlinkUEAssociatedLPPaTransport, s1ap_DownlinkUEAssociatedLPPaTransport_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_DownlinkUEAssociatedLPPaTransport_ies_2, + memb_s1ap_DownlinkUEAssociatedLPPaTransport_ies_constraint_1, + &asn_PER_memb_s1ap_DownlinkUEAssociatedLPPaTransport_ies_constr_2, + 0, + "s1ap-DownlinkUEAssociatedLPPaTransport-ies" + }, +}; +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 } /* s1ap-DownlinkUEAssociatedLPPaTransport-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport = { + "S1ap-DownlinkUEAssociatedLPPaTransport", + "S1ap-DownlinkUEAssociatedLPPaTransport", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_DownlinkUEAssociatedLPPaTransport_1, + 1, /* Elements count */ + &asn_SPC_S1ap_DownlinkUEAssociatedLPPaTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-DownlinkUEAssociatedLPPaTransport.h b/lib/asn/asn1c/S1ap-DownlinkUEAssociatedLPPaTransport.h new file mode 100644 index 0000000000..669c91cfcd --- /dev/null +++ b/lib/asn/asn1c/S1ap-DownlinkUEAssociatedLPPaTransport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_DownlinkUEAssociatedLPPaTransport_H_ +#define _S1ap_DownlinkUEAssociatedLPPaTransport_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-DownlinkUEAssociatedLPPaTransport */ +typedef struct S1ap_DownlinkUEAssociatedLPPaTransport { + struct S1ap_DownlinkUEAssociatedLPPaTransport__s1ap_DownlinkUEAssociatedLPPaTransport_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_DownlinkUEAssociatedLPPaTransport_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_DownlinkUEAssociatedLPPaTransport_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RAB-ID.c b/lib/asn/asn1c/S1ap-E-RAB-ID.c new file mode 100644 index 0000000000..c7fb266793 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RAB-ID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RAB-ID.h" + +int +S1ap_E_RAB_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 15LL)) { + /* 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 void +S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_E_RAB_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_E_RAB_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RAB_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_E_RAB_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RAB_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_E_RAB_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RAB_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_E_RAB_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_E_RAB_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_E_RAB_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RAB_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_E_RAB_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0l, 15l } /* (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 = { + "S1ap-E-RAB-ID", + "S1ap-E-RAB-ID", + S1ap_E_RAB_ID_free, + S1ap_E_RAB_ID_print, + S1ap_E_RAB_ID_constraint, + S1ap_E_RAB_ID_decode_ber, + S1ap_E_RAB_ID_encode_der, + S1ap_E_RAB_ID_decode_xer, + S1ap_E_RAB_ID_encode_xer, + S1ap_E_RAB_ID_decode_uper, + S1ap_E_RAB_ID_encode_uper, + S1ap_E_RAB_ID_decode_aper, + S1ap_E_RAB_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RAB_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RAB-ID.h b/lib/asn/asn1c/S1ap-E-RAB-ID.h new file mode 100644 index 0000000000..c7e5240ef3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RAB-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-E-RABAdmittedItem.c b/lib/asn/asn1c/S1ap-E-RABAdmittedItem.c new file mode 100644 index 0000000000..d33cc24667 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABAdmittedItem.c @@ -0,0 +1,134 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABAdmittedItem.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "dL-gTP-TEID" + }, + { ATF_POINTER, 3, offsetof(struct S1ap_E_RABAdmittedItem, uL_S1ap_TransportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_TransportLayerAddress, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uL-S1ap-TransportLayerAddress" + }, + { ATF_POINTER, 2, offsetof(struct S1ap_E_RABAdmittedItem, uL_S1ap_GTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_GTP_TEID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uL-S1ap-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_ProtocolExtensionContainer_5749P2, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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-S1ap-TransportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* uL-S1ap-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 */ + 7, /* Start extensions */ + 9 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABAdmittedItem = { + "S1ap-E-RABAdmittedItem", + "S1ap-E-RABAdmittedItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABAdmittedItem_1, + 8, /* Elements count */ + &asn_SPC_S1ap_E_RABAdmittedItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABAdmittedItem.h b/lib/asn/asn1c/S1ap-E-RABAdmittedItem.h new file mode 100644 index 0000000000..b690b05da5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABAdmittedItem.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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_S1ap_TransportLayerAddress /* OPTIONAL */; + S1ap_GTP_TEID_t *uL_S1ap_GTP_TEID /* OPTIONAL */; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABAdmittedItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABAdmittedList.c b/lib/asn/asn1c/S1ap-E-RABAdmittedList.c new file mode 100644 index 0000000000..24c194a938 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABAdmittedList.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABAdmittedList.h" + +int +S1ap_E_RABAdmittedList_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +S1ap_E_RABAdmittedList_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_E_RABAdmittedList_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABAdmittedList_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_E_RABAdmittedList_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABAdmittedList_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_E_RABAdmittedList_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABAdmittedList_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_E_RABAdmittedList_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_E_RABAdmittedList_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_E_RABAdmittedList_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABAdmittedList_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-E-RABAdmittedList", + "S1ap-E-RABAdmittedList", + S1ap_E_RABAdmittedList_free, + S1ap_E_RABAdmittedList_print, + S1ap_E_RABAdmittedList_constraint, + S1ap_E_RABAdmittedList_decode_ber, + S1ap_E_RABAdmittedList_encode_der, + S1ap_E_RABAdmittedList_decode_xer, + S1ap_E_RABAdmittedList_encode_xer, + S1ap_E_RABAdmittedList_decode_uper, + S1ap_E_RABAdmittedList_encode_uper, + S1ap_E_RABAdmittedList_decode_aper, + S1ap_E_RABAdmittedList_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABAdmittedList.h b/lib/asn/asn1c/S1ap-E-RABAdmittedList.h new file mode 100644 index 0000000000..4cdc0028ea --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABAdmittedList.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABAdmittedList_H_ +#define _S1ap_E_RABAdmittedList_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-E-RABAdmittedList */ +typedef ProtocolIE_ContainerList_5732P0_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; +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/asn/asn1c/S1ap-E-RABDataForwardingItem.c b/lib/asn/asn1c/S1ap-E-RABDataForwardingItem.c new file mode 100644 index 0000000000..504ca140d6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABDataForwardingItem.c @@ -0,0 +1,114 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABDataForwardingItem.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "dL-gTP-TEID" + }, + { ATF_POINTER, 3, offsetof(struct S1ap_E_RABDataForwardingItem, uL_S1ap_TransportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_TransportLayerAddress, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uL-S1ap-TransportLayerAddress" + }, + { ATF_POINTER, 2, offsetof(struct S1ap_E_RABDataForwardingItem, uL_S1ap_GTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_GTP_TEID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uL-S1ap-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_ProtocolExtensionContainer_5749P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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-S1ap-TransportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-S1ap-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 */ + 5, /* Start extensions */ + 7 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABDataForwardingItem = { + "S1ap-E-RABDataForwardingItem", + "S1ap-E-RABDataForwardingItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABDataForwardingItem_1, + 6, /* Elements count */ + &asn_SPC_S1ap_E_RABDataForwardingItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABDataForwardingItem.h b/lib/asn/asn1c/S1ap-E-RABDataForwardingItem.h new file mode 100644 index 0000000000..fdcef23887 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABDataForwardingItem.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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_S1ap_TransportLayerAddress /* OPTIONAL */; + S1ap_GTP_TEID_t *uL_S1ap_GTP_TEID /* OPTIONAL */; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABDataForwardingItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABFailedToSetupItemHOReqAck.c b/lib/asn/asn1c/S1ap-E-RABFailedToSetupItemHOReqAck.c new file mode 100644 index 0000000000..fc290ce748 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABFailedToSetupItemHOReqAck.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABFailedToSetupItemHOReqAck.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P3, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABFailedToSetupItemHOReqAck = { + "S1ap-E-RABFailedToSetupItemHOReqAck", + "S1ap-E-RABFailedToSetupItemHOReqAck", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABFailedToSetupItemHOReqAck_1, + 3, /* Elements count */ + &asn_SPC_S1ap_E_RABFailedToSetupItemHOReqAck_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABFailedToSetupItemHOReqAck.h b/lib/asn/asn1c/S1ap-E-RABFailedToSetupItemHOReqAck.h new file mode 100644 index 0000000000..be747d2c18 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABFailedToSetupItemHOReqAck.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-E-RABFailedToSetupItemHOReqAck */ +typedef struct S1ap_E_RABFailedToSetupItemHOReqAck { + S1ap_E_RAB_ID_t e_RAB_ID; + S1ap_Cause_t cause; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABFailedToSetupItemHOReqAck_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABFailedtoSetupListHOReqAck.c b/lib/asn/asn1c/S1ap-E-RABFailedtoSetupListHOReqAck.c new file mode 100644 index 0000000000..af74d737f3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABFailedtoSetupListHOReqAck.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABFailedtoSetupListHOReqAck.h" + +int +S1ap_E_RABFailedtoSetupListHOReqAck_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +S1ap_E_RABFailedtoSetupListHOReqAck_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_E_RABFailedtoSetupListHOReqAck_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABFailedtoSetupListHOReqAck_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_E_RABFailedtoSetupListHOReqAck_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABFailedtoSetupListHOReqAck_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_E_RABFailedtoSetupListHOReqAck_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABFailedtoSetupListHOReqAck_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_E_RABFailedtoSetupListHOReqAck_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_E_RABFailedtoSetupListHOReqAck_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_E_RABFailedtoSetupListHOReqAck_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABFailedtoSetupListHOReqAck_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-E-RABFailedtoSetupListHOReqAck", + "S1ap-E-RABFailedtoSetupListHOReqAck", + S1ap_E_RABFailedtoSetupListHOReqAck_free, + S1ap_E_RABFailedtoSetupListHOReqAck_print, + S1ap_E_RABFailedtoSetupListHOReqAck_constraint, + S1ap_E_RABFailedtoSetupListHOReqAck_decode_ber, + S1ap_E_RABFailedtoSetupListHOReqAck_encode_der, + S1ap_E_RABFailedtoSetupListHOReqAck_decode_xer, + S1ap_E_RABFailedtoSetupListHOReqAck_encode_xer, + S1ap_E_RABFailedtoSetupListHOReqAck_decode_uper, + S1ap_E_RABFailedtoSetupListHOReqAck_encode_uper, + S1ap_E_RABFailedtoSetupListHOReqAck_decode_aper, + S1ap_E_RABFailedtoSetupListHOReqAck_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABFailedtoSetupListHOReqAck.h b/lib/asn/asn1c/S1ap-E-RABFailedtoSetupListHOReqAck.h new file mode 100644 index 0000000000..2bd93a1c61 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABFailedtoSetupListHOReqAck.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABFailedtoSetupListHOReqAck_H_ +#define _S1ap_E_RABFailedtoSetupListHOReqAck_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-E-RABFailedtoSetupListHOReqAck */ +typedef ProtocolIE_ContainerList_5732P0_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; +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/asn/asn1c/S1ap-E-RABInformationList.c b/lib/asn/asn1c/S1ap-E-RABInformationList.c new file mode 100644 index 0000000000..85687d167c --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABInformationList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABInformationList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABInformationList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1ap_E_RABInformationList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_E_RABInformationList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-E-RABInformationList", + "S1ap-E-RABInformationList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABInformationList_constr_1, + asn_MBR_S1ap_E_RABInformationList_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABInformationList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABInformationList.h b/lib/asn/asn1c/S1ap-E-RABInformationList.h new file mode 100644 index 0000000000..61c2538de1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABInformationList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABInformationList_H_ +#define _S1ap_E_RABInformationList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABInformationList */ +typedef struct S1ap_E_RABInformationList { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABInformationList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABInformationListItem.c b/lib/asn/asn1c/S1ap-E-RABInformationListItem.c new file mode 100644 index 0000000000..f389f136f6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABInformationListItem.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABInformationListItem.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P34, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABInformationListItem = { + "S1ap-E-RABInformationListItem", + "S1ap-E-RABInformationListItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABInformationListItem_1, + 3, /* Elements count */ + &asn_SPC_S1ap_E_RABInformationListItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABInformationListItem.h b/lib/asn/asn1c/S1ap-E-RABInformationListItem.h new file mode 100644 index 0000000000..841eb3dde2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABInformationListItem.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABInformationListItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABItem.c b/lib/asn/asn1c/S1ap-E-RABItem.c new file mode 100644 index 0000000000..10052b98df --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABItem.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABItem.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P35, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABItem = { + "S1ap-E-RABItem", + "S1ap-E-RABItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABItem_1, + 3, /* Elements count */ + &asn_SPC_S1ap_E_RABItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABItem.h b/lib/asn/asn1c/S1ap-E-RABItem.h new file mode 100644 index 0000000000..a3c46cdea6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABItem.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-E-RABItem */ +typedef struct S1ap_E_RABItem { + S1ap_E_RAB_ID_t e_RAB_ID; + S1ap_Cause_t cause; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.c b/lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.c new file mode 100644 index 0000000000..8ab25d3093 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABLevelQoSParameters.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P36, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABLevelQoSParameters = { + "S1ap-E-RABLevelQoSParameters", + "S1ap-E-RABLevelQoSParameters", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABLevelQoSParameters_1, + 4, /* Elements count */ + &asn_SPC_S1ap_E_RABLevelQoSParameters_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.h b/lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.h new file mode 100644 index 0000000000..054abe1574 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABLevelQoSParameters.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-E-RABLevelQoSParameters */ +typedef struct S1ap_E_RABLevelQoSParameters { + S1ap_QCI_t qCI; + S1ap_AllocationAndRetentionPriority_t allocationRetentionPriority; + struct S1ap_GBR_QosInformation *gbrQosInformation /* OPTIONAL */; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-GBR-QosInformation.h" +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABLevelQoSParameters_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABList.c b/lib/asn/asn1c/S1ap-E-RABList.c new file mode 100644 index 0000000000..ee0fa7389a --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-E-RABList", + "S1ap-E-RABList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABList_constr_1, + asn_MBR_S1ap_E_RABList_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABList.h b/lib/asn/asn1c/S1ap-E-RABList.h new file mode 100644 index 0000000000..1a9653d531 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABList_H_ +#define _S1ap_E_RABList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABList */ +typedef struct S1ap_E_RABList { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABModifyItemBearerModRes.c b/lib/asn/asn1c/S1ap-E-RABModifyItemBearerModRes.c new file mode 100644 index 0000000000..4903866655 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABModifyItemBearerModRes.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABModifyItemBearerModRes.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P9, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABModifyItemBearerModRes = { + "S1ap-E-RABModifyItemBearerModRes", + "S1ap-E-RABModifyItemBearerModRes", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABModifyItemBearerModRes_1, + 2, /* Elements count */ + &asn_SPC_S1ap_E_RABModifyItemBearerModRes_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABModifyItemBearerModRes.h b/lib/asn/asn1c/S1ap-E-RABModifyItemBearerModRes.h new file mode 100644 index 0000000000..5cc397829b --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABModifyItemBearerModRes.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-E-RABModifyItemBearerModRes */ +typedef struct S1ap_E_RABModifyItemBearerModRes { + S1ap_E_RAB_ID_t e_RAB_ID; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABModifyItemBearerModRes_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABModifyListBearerModRes.c b/lib/asn/asn1c/S1ap-E-RABModifyListBearerModRes.c new file mode 100644 index 0000000000..6f131c95e5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABModifyListBearerModRes.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABModifyListBearerModRes.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABModifyListBearerModRes_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-E-RABModifyListBearerModRes", + "S1ap-E-RABModifyListBearerModRes", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABModifyListBearerModRes_constr_1, + asn_MBR_S1ap_E_RABModifyListBearerModRes_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABModifyListBearerModRes_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABModifyListBearerModRes.h b/lib/asn/asn1c/S1ap-E-RABModifyListBearerModRes.h new file mode 100644 index 0000000000..eb4758b4eb --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABModifyListBearerModRes.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABModifyListBearerModRes_H_ +#define _S1ap_E_RABModifyListBearerModRes_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABModifyListBearerModRes */ +typedef struct S1ap_E_RABModifyListBearerModRes { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABModifyListBearerModRes_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABModifyRequest.c b/lib/asn/asn1c/S1ap-E-RABModifyRequest.c new file mode 100644 index 0000000000..580b28f999 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABModifyRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABModifyRequest.h" + +static int +memb_s1ap_E_RABModifyRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_E_RABModifyRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_E_RABModifyRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_E_RABModifyRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_E_RABModifyRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_E_RABModifyRequest_ies_specs_2 = { + sizeof(struct S1ap_E_RABModifyRequest__s1ap_E_RABModifyRequest_ies), + offsetof(struct S1ap_E_RABModifyRequest__s1ap_E_RABModifyRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_E_RABModifyRequest_ies_2 = { + "s1ap-E-RABModifyRequest-ies", + "s1ap-E-RABModifyRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_E_RABModifyRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_E_RABModifyRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABModifyRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_E_RABModifyRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_E_RABModifyRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABModifyRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_E_RABModifyRequest_ies_constr_2, + asn_MBR_s1ap_E_RABModifyRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_E_RABModifyRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_E_RABModifyRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_E_RABModifyRequest, s1ap_E_RABModifyRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_E_RABModifyRequest_ies_2, + memb_s1ap_E_RABModifyRequest_ies_constraint_1, + &asn_PER_memb_s1ap_E_RABModifyRequest_ies_constr_2, + 0, + "s1ap-E-RABModifyRequest-ies" + }, +}; +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 } /* s1ap-E-RABModifyRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABModifyRequest = { + "S1ap-E-RABModifyRequest", + "S1ap-E-RABModifyRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABModifyRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_E_RABModifyRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABModifyRequest.h b/lib/asn/asn1c/S1ap-E-RABModifyRequest.h new file mode 100644 index 0000000000..d3785dde8d --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABModifyRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABModifyRequest_H_ +#define _S1ap_E_RABModifyRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-E-RABModifyRequest */ +typedef struct S1ap_E_RABModifyRequest { + struct S1ap_E_RABModifyRequest__s1ap_E_RABModifyRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_E_RABModifyRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_E_RABModifyRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABModifyResponse.c b/lib/asn/asn1c/S1ap-E-RABModifyResponse.c new file mode 100644 index 0000000000..dfb06e5480 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABModifyResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABModifyResponse.h" + +static int +memb_s1ap_E_RABModifyResponse_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_E_RABModifyResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_E_RABModifyResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_E_RABModifyResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_E_RABModifyResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_E_RABModifyResponse_ies_specs_2 = { + sizeof(struct S1ap_E_RABModifyResponse__s1ap_E_RABModifyResponse_ies), + offsetof(struct S1ap_E_RABModifyResponse__s1ap_E_RABModifyResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_E_RABModifyResponse_ies_2 = { + "s1ap-E-RABModifyResponse-ies", + "s1ap-E-RABModifyResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_E_RABModifyResponse_ies_tags_2, + sizeof(asn_DEF_s1ap_E_RABModifyResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABModifyResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_E_RABModifyResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_E_RABModifyResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABModifyResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_E_RABModifyResponse_ies_constr_2, + asn_MBR_s1ap_E_RABModifyResponse_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_E_RABModifyResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_E_RABModifyResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_E_RABModifyResponse, s1ap_E_RABModifyResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_E_RABModifyResponse_ies_2, + memb_s1ap_E_RABModifyResponse_ies_constraint_1, + &asn_PER_memb_s1ap_E_RABModifyResponse_ies_constr_2, + 0, + "s1ap-E-RABModifyResponse-ies" + }, +}; +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 } /* s1ap-E-RABModifyResponse-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABModifyResponse = { + "S1ap-E-RABModifyResponse", + "S1ap-E-RABModifyResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABModifyResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_E_RABModifyResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABModifyResponse.h b/lib/asn/asn1c/S1ap-E-RABModifyResponse.h new file mode 100644 index 0000000000..0e19657f3c --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABModifyResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABModifyResponse_H_ +#define _S1ap_E_RABModifyResponse_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-E-RABModifyResponse */ +typedef struct S1ap_E_RABModifyResponse { + struct S1ap_E_RABModifyResponse__s1ap_E_RABModifyResponse_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_E_RABModifyResponse_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_E_RABModifyResponse_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseCommand.c b/lib/asn/asn1c/S1ap-E-RABReleaseCommand.c new file mode 100644 index 0000000000..fcf99f1a5a --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseCommand.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABReleaseCommand.h" + +static int +memb_s1ap_E_RABReleaseCommand_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_E_RABReleaseCommand_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_E_RABReleaseCommand_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_E_RABReleaseCommand_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_E_RABReleaseCommand_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_E_RABReleaseCommand_ies_specs_2 = { + sizeof(struct S1ap_E_RABReleaseCommand__s1ap_E_RABReleaseCommand_ies), + offsetof(struct S1ap_E_RABReleaseCommand__s1ap_E_RABReleaseCommand_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_E_RABReleaseCommand_ies_2 = { + "s1ap-E-RABReleaseCommand-ies", + "s1ap-E-RABReleaseCommand-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_E_RABReleaseCommand_ies_tags_2, + sizeof(asn_DEF_s1ap_E_RABReleaseCommand_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABReleaseCommand_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_E_RABReleaseCommand_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_E_RABReleaseCommand_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABReleaseCommand_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_E_RABReleaseCommand_ies_constr_2, + asn_MBR_s1ap_E_RABReleaseCommand_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_E_RABReleaseCommand_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_E_RABReleaseCommand_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_E_RABReleaseCommand, s1ap_E_RABReleaseCommand_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_E_RABReleaseCommand_ies_2, + memb_s1ap_E_RABReleaseCommand_ies_constraint_1, + &asn_PER_memb_s1ap_E_RABReleaseCommand_ies_constr_2, + 0, + "s1ap-E-RABReleaseCommand-ies" + }, +}; +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 } /* s1ap-E-RABReleaseCommand-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABReleaseCommand = { + "S1ap-E-RABReleaseCommand", + "S1ap-E-RABReleaseCommand", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABReleaseCommand_1, + 1, /* Elements count */ + &asn_SPC_S1ap_E_RABReleaseCommand_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseCommand.h b/lib/asn/asn1c/S1ap-E-RABReleaseCommand.h new file mode 100644 index 0000000000..6bb8b8cdc8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseCommand.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABReleaseCommand_H_ +#define _S1ap_E_RABReleaseCommand_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-E-RABReleaseCommand */ +typedef struct S1ap_E_RABReleaseCommand { + struct S1ap_E_RABReleaseCommand__s1ap_E_RABReleaseCommand_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_E_RABReleaseCommand_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_E_RABReleaseCommand_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseIndication.c b/lib/asn/asn1c/S1ap-E-RABReleaseIndication.c new file mode 100644 index 0000000000..d252060c5e --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseIndication.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABReleaseIndication.h" + +static int +memb_s1ap_E_RABReleaseIndication_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_E_RABReleaseIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_E_RABReleaseIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_E_RABReleaseIndication_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_E_RABReleaseIndication_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_E_RABReleaseIndication_ies_specs_2 = { + sizeof(struct S1ap_E_RABReleaseIndication__s1ap_E_RABReleaseIndication_ies), + offsetof(struct S1ap_E_RABReleaseIndication__s1ap_E_RABReleaseIndication_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_E_RABReleaseIndication_ies_2 = { + "s1ap-E-RABReleaseIndication-ies", + "s1ap-E-RABReleaseIndication-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_E_RABReleaseIndication_ies_tags_2, + sizeof(asn_DEF_s1ap_E_RABReleaseIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABReleaseIndication_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_E_RABReleaseIndication_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_E_RABReleaseIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABReleaseIndication_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_E_RABReleaseIndication_ies_constr_2, + asn_MBR_s1ap_E_RABReleaseIndication_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_E_RABReleaseIndication_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_E_RABReleaseIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_E_RABReleaseIndication, s1ap_E_RABReleaseIndication_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_E_RABReleaseIndication_ies_2, + memb_s1ap_E_RABReleaseIndication_ies_constraint_1, + &asn_PER_memb_s1ap_E_RABReleaseIndication_ies_constr_2, + 0, + "s1ap-E-RABReleaseIndication-ies" + }, +}; +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 } /* s1ap-E-RABReleaseIndication-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABReleaseIndication = { + "S1ap-E-RABReleaseIndication", + "S1ap-E-RABReleaseIndication", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABReleaseIndication_1, + 1, /* Elements count */ + &asn_SPC_S1ap_E_RABReleaseIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseIndication.h b/lib/asn/asn1c/S1ap-E-RABReleaseIndication.h new file mode 100644 index 0000000000..293658012b --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABReleaseIndication_H_ +#define _S1ap_E_RABReleaseIndication_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-E-RABReleaseIndication */ +typedef struct S1ap_E_RABReleaseIndication { + struct S1ap_E_RABReleaseIndication__s1ap_E_RABReleaseIndication_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_E_RABReleaseIndication_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_E_RABReleaseIndication_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseItemBearerRelComp.c b/lib/asn/asn1c/S1ap-E-RABReleaseItemBearerRelComp.c new file mode 100644 index 0000000000..ee3493873a --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseItemBearerRelComp.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABReleaseItemBearerRelComp.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P10, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABReleaseItemBearerRelComp = { + "S1ap-E-RABReleaseItemBearerRelComp", + "S1ap-E-RABReleaseItemBearerRelComp", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABReleaseItemBearerRelComp_1, + 2, /* Elements count */ + &asn_SPC_S1ap_E_RABReleaseItemBearerRelComp_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseItemBearerRelComp.h b/lib/asn/asn1c/S1ap-E-RABReleaseItemBearerRelComp.h new file mode 100644 index 0000000000..777350ebc6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseItemBearerRelComp.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-E-RABReleaseItemBearerRelComp */ +typedef struct S1ap_E_RABReleaseItemBearerRelComp { + S1ap_E_RAB_ID_t e_RAB_ID; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABReleaseItemBearerRelComp_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseListBearerRelComp.c b/lib/asn/asn1c/S1ap-E-RABReleaseListBearerRelComp.c new file mode 100644 index 0000000000..7b18a018d7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseListBearerRelComp.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABReleaseListBearerRelComp.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABReleaseListBearerRelComp_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-E-RABReleaseListBearerRelComp", + "S1ap-E-RABReleaseListBearerRelComp", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABReleaseListBearerRelComp_constr_1, + asn_MBR_S1ap_E_RABReleaseListBearerRelComp_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABReleaseListBearerRelComp_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseListBearerRelComp.h b/lib/asn/asn1c/S1ap-E-RABReleaseListBearerRelComp.h new file mode 100644 index 0000000000..995a0cbfc6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseListBearerRelComp.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABReleaseListBearerRelComp_H_ +#define _S1ap_E_RABReleaseListBearerRelComp_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABReleaseListBearerRelComp */ +typedef struct S1ap_E_RABReleaseListBearerRelComp { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABReleaseListBearerRelComp_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseResponse.c b/lib/asn/asn1c/S1ap-E-RABReleaseResponse.c new file mode 100644 index 0000000000..d9503ee4ce --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABReleaseResponse.h" + +static int +memb_s1ap_E_RABReleaseResponse_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_E_RABReleaseResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_E_RABReleaseResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_E_RABReleaseResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_E_RABReleaseResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_E_RABReleaseResponse_ies_specs_2 = { + sizeof(struct S1ap_E_RABReleaseResponse__s1ap_E_RABReleaseResponse_ies), + offsetof(struct S1ap_E_RABReleaseResponse__s1ap_E_RABReleaseResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_E_RABReleaseResponse_ies_2 = { + "s1ap-E-RABReleaseResponse-ies", + "s1ap-E-RABReleaseResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_E_RABReleaseResponse_ies_tags_2, + sizeof(asn_DEF_s1ap_E_RABReleaseResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABReleaseResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_E_RABReleaseResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_E_RABReleaseResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABReleaseResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_E_RABReleaseResponse_ies_constr_2, + asn_MBR_s1ap_E_RABReleaseResponse_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_E_RABReleaseResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_E_RABReleaseResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_E_RABReleaseResponse, s1ap_E_RABReleaseResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_E_RABReleaseResponse_ies_2, + memb_s1ap_E_RABReleaseResponse_ies_constraint_1, + &asn_PER_memb_s1ap_E_RABReleaseResponse_ies_constr_2, + 0, + "s1ap-E-RABReleaseResponse-ies" + }, +}; +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 } /* s1ap-E-RABReleaseResponse-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABReleaseResponse = { + "S1ap-E-RABReleaseResponse", + "S1ap-E-RABReleaseResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABReleaseResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_E_RABReleaseResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABReleaseResponse.h b/lib/asn/asn1c/S1ap-E-RABReleaseResponse.h new file mode 100644 index 0000000000..cfb348c382 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABReleaseResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABReleaseResponse_H_ +#define _S1ap_E_RABReleaseResponse_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-E-RABReleaseResponse */ +typedef struct S1ap_E_RABReleaseResponse { + struct S1ap_E_RABReleaseResponse__s1ap_E_RABReleaseResponse_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_E_RABReleaseResponse_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_E_RABReleaseResponse_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABSetupItemBearerSURes.c b/lib/asn/asn1c/S1ap-E-RABSetupItemBearerSURes.c new file mode 100644 index 0000000000..9ffc92fd52 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupItemBearerSURes.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABSetupItemBearerSURes.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P7, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABSetupItemBearerSURes = { + "S1ap-E-RABSetupItemBearerSURes", + "S1ap-E-RABSetupItemBearerSURes", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABSetupItemBearerSURes_1, + 4, /* Elements count */ + &asn_SPC_S1ap_E_RABSetupItemBearerSURes_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABSetupItemBearerSURes.h b/lib/asn/asn1c/S1ap-E-RABSetupItemBearerSURes.h new file mode 100644 index 0000000000..9ca8d7a865 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupItemBearerSURes.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABSetupItemBearerSURes_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.c b/lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.c new file mode 100644 index 0000000000..78ee54897e --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABSetupItemCtxtSURes.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P12, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABSetupItemCtxtSURes = { + "S1ap-E-RABSetupItemCtxtSURes", + "S1ap-E-RABSetupItemCtxtSURes", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABSetupItemCtxtSURes_1, + 4, /* Elements count */ + &asn_SPC_S1ap_E_RABSetupItemCtxtSURes_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.h b/lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.h new file mode 100644 index 0000000000..e722814528 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupItemCtxtSURes.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABSetupItemCtxtSURes_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABSetupListBearerSURes.c b/lib/asn/asn1c/S1ap-E-RABSetupListBearerSURes.c new file mode 100644 index 0000000000..8cad569c02 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupListBearerSURes.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABSetupListBearerSURes.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABSetupListBearerSURes_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-E-RABSetupListBearerSURes", + "S1ap-E-RABSetupListBearerSURes", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABSetupListBearerSURes_constr_1, + asn_MBR_S1ap_E_RABSetupListBearerSURes_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABSetupListBearerSURes_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABSetupListBearerSURes.h b/lib/asn/asn1c/S1ap-E-RABSetupListBearerSURes.h new file mode 100644 index 0000000000..679cacc29f --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupListBearerSURes.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABSetupListBearerSURes_H_ +#define _S1ap_E_RABSetupListBearerSURes_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABSetupListBearerSURes */ +typedef struct S1ap_E_RABSetupListBearerSURes { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABSetupListBearerSURes_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.c b/lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.c new file mode 100644 index 0000000000..03fba8bddf --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABSetupListCtxtSURes.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABSetupListCtxtSURes_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-E-RABSetupListCtxtSURes", + "S1ap-E-RABSetupListCtxtSURes", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABSetupListCtxtSURes_constr_1, + asn_MBR_S1ap_E_RABSetupListCtxtSURes_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABSetupListCtxtSURes_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.h b/lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.h new file mode 100644 index 0000000000..63faab478d --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupListCtxtSURes.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABSetupListCtxtSURes_H_ +#define _S1ap_E_RABSetupListCtxtSURes_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABSetupListCtxtSURes */ +typedef struct S1ap_E_RABSetupListCtxtSURes { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABSetupListCtxtSURes_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABSetupRequest.c b/lib/asn/asn1c/S1ap-E-RABSetupRequest.c new file mode 100644 index 0000000000..da16588a91 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABSetupRequest.h" + +static int +memb_s1ap_E_RABSetupRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_E_RABSetupRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_E_RABSetupRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_E_RABSetupRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_E_RABSetupRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_E_RABSetupRequest_ies_specs_2 = { + sizeof(struct S1ap_E_RABSetupRequest__s1ap_E_RABSetupRequest_ies), + offsetof(struct S1ap_E_RABSetupRequest__s1ap_E_RABSetupRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_E_RABSetupRequest_ies_2 = { + "s1ap-E-RABSetupRequest-ies", + "s1ap-E-RABSetupRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_E_RABSetupRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_E_RABSetupRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABSetupRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_E_RABSetupRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_E_RABSetupRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABSetupRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_E_RABSetupRequest_ies_constr_2, + asn_MBR_s1ap_E_RABSetupRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_E_RABSetupRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_E_RABSetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_E_RABSetupRequest, s1ap_E_RABSetupRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_E_RABSetupRequest_ies_2, + memb_s1ap_E_RABSetupRequest_ies_constraint_1, + &asn_PER_memb_s1ap_E_RABSetupRequest_ies_constr_2, + 0, + "s1ap-E-RABSetupRequest-ies" + }, +}; +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 } /* s1ap-E-RABSetupRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABSetupRequest = { + "S1ap-E-RABSetupRequest", + "S1ap-E-RABSetupRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABSetupRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_E_RABSetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABSetupRequest.h b/lib/asn/asn1c/S1ap-E-RABSetupRequest.h new file mode 100644 index 0000000000..7edb223102 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABSetupRequest_H_ +#define _S1ap_E_RABSetupRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-E-RABSetupRequest */ +typedef struct S1ap_E_RABSetupRequest { + struct S1ap_E_RABSetupRequest__s1ap_E_RABSetupRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_E_RABSetupRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_E_RABSetupRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABSetupResponse.c b/lib/asn/asn1c/S1ap-E-RABSetupResponse.c new file mode 100644 index 0000000000..d7312dcc58 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABSetupResponse.h" + +static int +memb_s1ap_E_RABSetupResponse_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_E_RABSetupResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_E_RABSetupResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_E_RABSetupResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_E_RABSetupResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_E_RABSetupResponse_ies_specs_2 = { + sizeof(struct S1ap_E_RABSetupResponse__s1ap_E_RABSetupResponse_ies), + offsetof(struct S1ap_E_RABSetupResponse__s1ap_E_RABSetupResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_E_RABSetupResponse_ies_2 = { + "s1ap-E-RABSetupResponse-ies", + "s1ap-E-RABSetupResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_E_RABSetupResponse_ies_tags_2, + sizeof(asn_DEF_s1ap_E_RABSetupResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABSetupResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_E_RABSetupResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_E_RABSetupResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_E_RABSetupResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_E_RABSetupResponse_ies_constr_2, + asn_MBR_s1ap_E_RABSetupResponse_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_E_RABSetupResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_E_RABSetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_E_RABSetupResponse, s1ap_E_RABSetupResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_E_RABSetupResponse_ies_2, + memb_s1ap_E_RABSetupResponse_ies_constraint_1, + &asn_PER_memb_s1ap_E_RABSetupResponse_ies_constr_2, + 0, + "s1ap-E-RABSetupResponse-ies" + }, +}; +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 } /* s1ap-E-RABSetupResponse-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABSetupResponse = { + "S1ap-E-RABSetupResponse", + "S1ap-E-RABSetupResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABSetupResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_E_RABSetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABSetupResponse.h b/lib/asn/asn1c/S1ap-E-RABSetupResponse.h new file mode 100644 index 0000000000..6781b574a7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSetupResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABSetupResponse_H_ +#define _S1ap_E_RABSetupResponse_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-E-RABSetupResponse */ +typedef struct S1ap_E_RABSetupResponse { + struct S1ap_E_RABSetupResponse__s1ap_E_RABSetupResponse_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_E_RABSetupResponse_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_E_RABSetupResponse_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABSubjecttoDataForwardingList.c b/lib/asn/asn1c/S1ap-E-RABSubjecttoDataForwardingList.c new file mode 100644 index 0000000000..0ac3758638 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSubjecttoDataForwardingList.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABSubjecttoDataForwardingList.h" + +int +S1ap_E_RABSubjecttoDataForwardingList_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +S1ap_E_RABSubjecttoDataForwardingList_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_E_RABSubjecttoDataForwardingList_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABSubjecttoDataForwardingList_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_E_RABSubjecttoDataForwardingList_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABSubjecttoDataForwardingList_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_E_RABSubjecttoDataForwardingList_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABSubjecttoDataForwardingList_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_E_RABSubjecttoDataForwardingList_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_E_RABSubjecttoDataForwardingList_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_E_RABSubjecttoDataForwardingList_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABSubjecttoDataForwardingList_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-E-RABSubjecttoDataForwardingList", + "S1ap-E-RABSubjecttoDataForwardingList", + S1ap_E_RABSubjecttoDataForwardingList_free, + S1ap_E_RABSubjecttoDataForwardingList_print, + S1ap_E_RABSubjecttoDataForwardingList_constraint, + S1ap_E_RABSubjecttoDataForwardingList_decode_ber, + S1ap_E_RABSubjecttoDataForwardingList_encode_der, + S1ap_E_RABSubjecttoDataForwardingList_decode_xer, + S1ap_E_RABSubjecttoDataForwardingList_encode_xer, + S1ap_E_RABSubjecttoDataForwardingList_decode_uper, + S1ap_E_RABSubjecttoDataForwardingList_encode_uper, + S1ap_E_RABSubjecttoDataForwardingList_decode_aper, + S1ap_E_RABSubjecttoDataForwardingList_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABSubjecttoDataForwardingList.h b/lib/asn/asn1c/S1ap-E-RABSubjecttoDataForwardingList.h new file mode 100644 index 0000000000..1171ce15a8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABSubjecttoDataForwardingList.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABSubjecttoDataForwardingList_H_ +#define _S1ap_E_RABSubjecttoDataForwardingList_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-E-RABSubjecttoDataForwardingList */ +typedef ProtocolIE_ContainerList_5732P0_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; +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/asn/asn1c/S1ap-E-RABToBeModifiedItemBearerModReq.c b/lib/asn/asn1c/S1ap-E-RABToBeModifiedItemBearerModReq.c new file mode 100644 index 0000000000..10beb6e453 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeModifiedItemBearerModReq.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeModifiedItemBearerModReq.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P8, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABToBeModifiedItemBearerModReq = { + "S1ap-E-RABToBeModifiedItemBearerModReq", + "S1ap-E-RABToBeModifiedItemBearerModReq", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABToBeModifiedItemBearerModReq_1, + 4, /* Elements count */ + &asn_SPC_S1ap_E_RABToBeModifiedItemBearerModReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeModifiedItemBearerModReq.h b/lib/asn/asn1c/S1ap-E-RABToBeModifiedItemBearerModReq.h new file mode 100644 index 0000000000..35a28890ae --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeModifiedItemBearerModReq.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABToBeModifiedItemBearerModReq_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeModifiedListBearerModReq.c b/lib/asn/asn1c/S1ap-E-RABToBeModifiedListBearerModReq.c new file mode 100644 index 0000000000..c7ccf73886 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeModifiedListBearerModReq.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeModifiedListBearerModReq.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABToBeModifiedListBearerModReq_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-E-RABToBeModifiedListBearerModReq", + "S1ap-E-RABToBeModifiedListBearerModReq", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABToBeModifiedListBearerModReq_constr_1, + asn_MBR_S1ap_E_RABToBeModifiedListBearerModReq_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABToBeModifiedListBearerModReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeModifiedListBearerModReq.h b/lib/asn/asn1c/S1ap-E-RABToBeModifiedListBearerModReq.h new file mode 100644 index 0000000000..10631a82d2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeModifiedListBearerModReq.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABToBeModifiedListBearerModReq_H_ +#define _S1ap_E_RABToBeModifiedListBearerModReq_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABToBeModifiedListBearerModReq */ +typedef struct S1ap_E_RABToBeModifiedListBearerModReq { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABToBeModifiedListBearerModReq_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupItemBearerSUReq.c b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemBearerSUReq.c new file mode 100644 index 0000000000..7726fe902c --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemBearerSUReq.c @@ -0,0 +1,114 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSetupItemBearerSUReq.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P6, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 5, /* Start extensions */ + 7 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABToBeSetupItemBearerSUReq = { + "S1ap-E-RABToBeSetupItemBearerSUReq", + "S1ap-E-RABToBeSetupItemBearerSUReq", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABToBeSetupItemBearerSUReq_1, + 6, /* Elements count */ + &asn_SPC_S1ap_E_RABToBeSetupItemBearerSUReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupItemBearerSUReq.h b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemBearerSUReq.h new file mode 100644 index 0000000000..695404f230 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemBearerSUReq.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABToBeSetupItemBearerSUReq_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.c b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.c new file mode 100644 index 0000000000..5069c60856 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.c @@ -0,0 +1,114 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSetupItemCtxtSUReq.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P11, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 5, /* Start extensions */ + 7 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABToBeSetupItemCtxtSUReq = { + "S1ap-E-RABToBeSetupItemCtxtSUReq", + "S1ap-E-RABToBeSetupItemCtxtSUReq", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABToBeSetupItemCtxtSUReq_1, + 6, /* Elements count */ + &asn_SPC_S1ap_E_RABToBeSetupItemCtxtSUReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.h b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.h new file mode 100644 index 0000000000..7cc2512cb9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemCtxtSUReq.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABToBeSetupItemCtxtSUReq_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.c b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.c new file mode 100644 index 0000000000..92106ada97 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSetupItemHOReq.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P1, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABToBeSetupItemHOReq = { + "S1ap-E-RABToBeSetupItemHOReq", + "S1ap-E-RABToBeSetupItemHOReq", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABToBeSetupItemHOReq_1, + 5, /* Elements count */ + &asn_SPC_S1ap_E_RABToBeSetupItemHOReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.h b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.h new file mode 100644 index 0000000000..cec513df95 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupItemHOReq.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABToBeSetupItemHOReq_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupListBearerSUReq.c b/lib/asn/asn1c/S1ap-E-RABToBeSetupListBearerSUReq.c new file mode 100644 index 0000000000..0997ee223d --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupListBearerSUReq.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSetupListBearerSUReq.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABToBeSetupListBearerSUReq_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-E-RABToBeSetupListBearerSUReq", + "S1ap-E-RABToBeSetupListBearerSUReq", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABToBeSetupListBearerSUReq_constr_1, + asn_MBR_S1ap_E_RABToBeSetupListBearerSUReq_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABToBeSetupListBearerSUReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupListBearerSUReq.h b/lib/asn/asn1c/S1ap-E-RABToBeSetupListBearerSUReq.h new file mode 100644 index 0000000000..58a1e5dd89 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupListBearerSUReq.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABToBeSetupListBearerSUReq_H_ +#define _S1ap_E_RABToBeSetupListBearerSUReq_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABToBeSetupListBearerSUReq */ +typedef struct S1ap_E_RABToBeSetupListBearerSUReq { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABToBeSetupListBearerSUReq_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.c b/lib/asn/asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.c new file mode 100644 index 0000000000..d77c8f9a0d --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSetupListCtxtSUReq.h" + +static asn_per_constraints_t asn_PER_type_S1ap_E_RABToBeSetupListCtxtSUReq_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-E-RABToBeSetupListCtxtSUReq", + "S1ap-E-RABToBeSetupListCtxtSUReq", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_RABToBeSetupListCtxtSUReq_constr_1, + asn_MBR_S1ap_E_RABToBeSetupListCtxtSUReq_1, + 1, /* Single element */ + &asn_SPC_S1ap_E_RABToBeSetupListCtxtSUReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.h b/lib/asn/asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.h new file mode 100644 index 0000000000..16cebad2f3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupListCtxtSUReq.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABToBeSetupListCtxtSUReq_H_ +#define _S1ap_E_RABToBeSetupListCtxtSUReq_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-E-RABToBeSetupListCtxtSUReq */ +typedef struct S1ap_E_RABToBeSetupListCtxtSUReq { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_E_RABToBeSetupListCtxtSUReq_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.c b/lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.c new file mode 100644 index 0000000000..fc3523e011 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSetupListHOReq.h" + +int +S1ap_E_RABToBeSetupListHOReq_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +S1ap_E_RABToBeSetupListHOReq_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_E_RABToBeSetupListHOReq_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSetupListHOReq_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_E_RABToBeSetupListHOReq_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSetupListHOReq_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_E_RABToBeSetupListHOReq_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSetupListHOReq_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_E_RABToBeSetupListHOReq_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_E_RABToBeSetupListHOReq_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_E_RABToBeSetupListHOReq_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABToBeSetupListHOReq_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-E-RABToBeSetupListHOReq", + "S1ap-E-RABToBeSetupListHOReq", + S1ap_E_RABToBeSetupListHOReq_free, + S1ap_E_RABToBeSetupListHOReq_print, + S1ap_E_RABToBeSetupListHOReq_constraint, + S1ap_E_RABToBeSetupListHOReq_decode_ber, + S1ap_E_RABToBeSetupListHOReq_encode_der, + S1ap_E_RABToBeSetupListHOReq_decode_xer, + S1ap_E_RABToBeSetupListHOReq_encode_xer, + S1ap_E_RABToBeSetupListHOReq_decode_uper, + S1ap_E_RABToBeSetupListHOReq_encode_uper, + S1ap_E_RABToBeSetupListHOReq_decode_aper, + S1ap_E_RABToBeSetupListHOReq_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.h b/lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.h new file mode 100644 index 0000000000..6b9deab610 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSetupListHOReq.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABToBeSetupListHOReq_H_ +#define _S1ap_E_RABToBeSetupListHOReq_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-E-RABToBeSetupListHOReq */ +typedef ProtocolIE_ContainerList_5732P0_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; +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/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.c b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.c new file mode 100644 index 0000000000..198ddc40cd --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSwitchedDLItem.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P4, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABToBeSwitchedDLItem = { + "S1ap-E-RABToBeSwitchedDLItem", + "S1ap-E-RABToBeSwitchedDLItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABToBeSwitchedDLItem_1, + 4, /* Elements count */ + &asn_SPC_S1ap_E_RABToBeSwitchedDLItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.h b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.h new file mode 100644 index 0000000000..92c5385602 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLItem.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABToBeSwitchedDLItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.c b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.c new file mode 100644 index 0000000000..01de6d391d --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSwitchedDLList.h" + +int +S1ap_E_RABToBeSwitchedDLList_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +S1ap_E_RABToBeSwitchedDLList_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_E_RABToBeSwitchedDLList_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSwitchedDLList_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_E_RABToBeSwitchedDLList_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSwitchedDLList_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_E_RABToBeSwitchedDLList_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSwitchedDLList_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_E_RABToBeSwitchedDLList_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_E_RABToBeSwitchedDLList_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_E_RABToBeSwitchedDLList_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABToBeSwitchedDLList_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-E-RABToBeSwitchedDLList", + "S1ap-E-RABToBeSwitchedDLList", + S1ap_E_RABToBeSwitchedDLList_free, + S1ap_E_RABToBeSwitchedDLList_print, + S1ap_E_RABToBeSwitchedDLList_constraint, + S1ap_E_RABToBeSwitchedDLList_decode_ber, + S1ap_E_RABToBeSwitchedDLList_encode_der, + S1ap_E_RABToBeSwitchedDLList_decode_xer, + S1ap_E_RABToBeSwitchedDLList_encode_xer, + S1ap_E_RABToBeSwitchedDLList_decode_uper, + S1ap_E_RABToBeSwitchedDLList_encode_uper, + S1ap_E_RABToBeSwitchedDLList_decode_aper, + S1ap_E_RABToBeSwitchedDLList_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.h b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.h new file mode 100644 index 0000000000..078ec287ab --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedDLList.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABToBeSwitchedDLList_H_ +#define _S1ap_E_RABToBeSwitchedDLList_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-E-RABToBeSwitchedDLList */ +typedef ProtocolIE_ContainerList_5732P0_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; +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/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.c b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.c new file mode 100644 index 0000000000..ef66ddec0d --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSwitchedULItem.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P5, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_E_RABToBeSwitchedULItem = { + "S1ap-E-RABToBeSwitchedULItem", + "S1ap-E-RABToBeSwitchedULItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_E_RABToBeSwitchedULItem_1, + 4, /* Elements count */ + &asn_SPC_S1ap_E_RABToBeSwitchedULItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.h b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.h new file mode 100644 index 0000000000..1d98d5ea9c --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULItem.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_E_RABToBeSwitchedULItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.c b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.c new file mode 100644 index 0000000000..d2e9c1e901 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-RABToBeSwitchedULList.h" + +int +S1ap_E_RABToBeSwitchedULList_constraint(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 >= 1LL && size <= 256LL)) { + /* Perform validation of the inner elements */ + return td->check_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 ProtocolIE_ContainerList_5732P0, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.free_struct; + td->print_struct = asn_DEF_ProtocolIE_ContainerList_5732P0.print_struct; + td->check_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.check_constraints; + td->ber_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.ber_decoder; + td->der_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.der_encoder; + td->xer_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_decoder; + td->xer_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.xer_encoder; + td->uper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_decoder; + td->uper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.uper_encoder; + td->aper_decoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_decoder; + td->aper_encoder = asn_DEF_ProtocolIE_ContainerList_5732P0.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_ProtocolIE_ContainerList_5732P0.per_constraints; + td->elements = asn_DEF_ProtocolIE_ContainerList_5732P0.elements; + td->elements_count = asn_DEF_ProtocolIE_ContainerList_5732P0.elements_count; + td->specifics = asn_DEF_ProtocolIE_ContainerList_5732P0.specifics; +} + +void +S1ap_E_RABToBeSwitchedULList_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_E_RABToBeSwitchedULList_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSwitchedULList_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_E_RABToBeSwitchedULList_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSwitchedULList_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_E_RABToBeSwitchedULList_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_RABToBeSwitchedULList_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_E_RABToBeSwitchedULList_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_E_RABToBeSwitchedULList_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_E_RABToBeSwitchedULList_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_RABToBeSwitchedULList_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-E-RABToBeSwitchedULList", + "S1ap-E-RABToBeSwitchedULList", + S1ap_E_RABToBeSwitchedULList_free, + S1ap_E_RABToBeSwitchedULList_print, + S1ap_E_RABToBeSwitchedULList_constraint, + S1ap_E_RABToBeSwitchedULList_decode_ber, + S1ap_E_RABToBeSwitchedULList_encode_der, + S1ap_E_RABToBeSwitchedULList_decode_xer, + S1ap_E_RABToBeSwitchedULList_encode_xer, + S1ap_E_RABToBeSwitchedULList_decode_uper, + S1ap_E_RABToBeSwitchedULList_encode_uper, + S1ap_E_RABToBeSwitchedULList_decode_aper, + S1ap_E_RABToBeSwitchedULList_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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 */ + 0, /* No PER visible constraints */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.h b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.h new file mode 100644 index 0000000000..609e8679c5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-RABToBeSwitchedULList.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_E_RABToBeSwitchedULList_H_ +#define _S1ap_E_RABToBeSwitchedULList_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-E-RABToBeSwitchedULList */ +typedef ProtocolIE_ContainerList_5732P0_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; +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/asn/asn1c/S1ap-E-UTRAN-Trace-ID.c b/lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.c new file mode 100644 index 0000000000..f052cfe562 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-E-UTRAN-Trace-ID.h" + +int +S1ap_E_UTRAN_Trace_ID_constraint(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 == 8LL)) { + /* 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 void +S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_E_UTRAN_Trace_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_E_UTRAN_Trace_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_UTRAN_Trace_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_E_UTRAN_Trace_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_UTRAN_Trace_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_E_UTRAN_Trace_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_E_UTRAN_Trace_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_E_UTRAN_Trace_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_E_UTRAN_Trace_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_E_UTRAN_Trace_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_E_UTRAN_Trace_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_E_UTRAN_Trace_ID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (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 = { + "S1ap-E-UTRAN-Trace-ID", + "S1ap-E-UTRAN-Trace-ID", + S1ap_E_UTRAN_Trace_ID_free, + S1ap_E_UTRAN_Trace_ID_print, + S1ap_E_UTRAN_Trace_ID_constraint, + S1ap_E_UTRAN_Trace_ID_decode_ber, + S1ap_E_UTRAN_Trace_ID_encode_der, + S1ap_E_UTRAN_Trace_ID_decode_xer, + S1ap_E_UTRAN_Trace_ID_encode_xer, + S1ap_E_UTRAN_Trace_ID_decode_uper, + S1ap_E_UTRAN_Trace_ID_encode_uper, + S1ap_E_UTRAN_Trace_ID_decode_aper, + S1ap_E_UTRAN_Trace_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_E_UTRAN_Trace_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.h b/lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.h new file mode 100644 index 0000000000..4cbddca681 --- /dev/null +++ b/lib/asn/asn1c/S1ap-E-UTRAN-Trace-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-ECGIList.c b/lib/asn/asn1c/S1ap-ECGIList.c new file mode 100644 index 0000000000..71a5119a94 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ECGIList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ECGIList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ECGIList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ECGIList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ECGIList", + "S1ap-ECGIList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ECGIList_constr_1, + asn_MBR_S1ap_ECGIList_1, + 1, /* Single element */ + &asn_SPC_S1ap_ECGIList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ECGIList.h b/lib/asn/asn1c/S1ap-ECGIList.h new file mode 100644 index 0000000000..701031b18b --- /dev/null +++ b/lib/asn/asn1c/S1ap-ECGIList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-EUTRAN-CGI.h" + +#endif /* _S1ap_ECGIList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENB-ID.c b/lib/asn/asn1c/S1ap-ENB-ID.c new file mode 100644 index 0000000000..1786e1ed2b --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENB-ID.c @@ -0,0 +1,145 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENB-ID.h" + +static int +memb_macroENB_ID_constraint_1(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 == 20LL)) { + /* 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_homeENB_ID_constraint_1(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 == 28LL)) { + /* 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_per_constraints_t asn_PER_memb_macroENB_ID_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20l, 20l } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_homeENB_ID_constr_3 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28l, 28l } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_S1ap_ENB_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static 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, + memb_macroENB_ID_constraint_1, + &asn_PER_memb_macroENB_ID_constr_2, + 0, + "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, + memb_homeENB_ID_constraint_1, + &asn_PER_memb_homeENB_ID_constr_3, + 0, + "homeENB-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 */ +}; +static 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, + 2, /* Count of tags in the map */ + 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENB_ID = { + "S1ap-ENB-ID", + "S1ap-ENB-ID", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_ENB_ID_constr_1, + asn_MBR_S1ap_ENB_ID_1, + 2, /* Elements count */ + &asn_SPC_S1ap_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENB-ID.h b/lib/asn/asn1c/S1ap-ENB-ID.h new file mode 100644 index 0000000000..367a9219f0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENB-ID.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 { + S1ap_ENB_ID_PR_NOTHING, /* No components present */ + S1ap_ENB_ID_PR_macroENB_ID, + S1ap_ENB_ID_PR_homeENB_ID, + /* Extensions may appear below */ + +} 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. + */ + } 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ENB_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENB-StatusTransfer-TransparentContainer.c b/lib/asn/asn1c/S1ap-ENB-StatusTransfer-TransparentContainer.c new file mode 100644 index 0000000000..567d20550a --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENB-StatusTransfer-TransparentContainer.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENB-StatusTransfer-TransparentContainer.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P33, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer = { + "S1ap-ENB-StatusTransfer-TransparentContainer", + "S1ap-ENB-StatusTransfer-TransparentContainer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ENB_StatusTransfer_TransparentContainer_1, + 2, /* Elements count */ + &asn_SPC_S1ap_ENB_StatusTransfer_TransparentContainer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENB-StatusTransfer-TransparentContainer.h b/lib/asn/asn1c/S1ap-ENB-StatusTransfer-TransparentContainer.h new file mode 100644 index 0000000000..a929f28866 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENB-StatusTransfer-TransparentContainer.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-ENB-StatusTransfer-TransparentContainer */ +typedef struct S1ap_ENB_StatusTransfer_TransparentContainer { + S1ap_Bearers_SubjectToStatusTransferList_t bearers_SubjectToStatusTransferList; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_ENB_StatusTransfer_TransparentContainer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.c b/lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.c new file mode 100644 index 0000000000..abafe8edad --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENB-UE-S1AP-ID.h" + +int +S1ap_ENB_UE_S1AP_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 16777215LL)) { + /* 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 void +S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_ENB_UE_S1AP_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ENB_UE_S1AP_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ENB_UE_S1AP_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ENB_UE_S1AP_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ENB_UE_S1AP_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ENB_UE_S1AP_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ENB_UE_S1AP_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ENB_UE_S1AP_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ENB_UE_S1AP_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ENB_UE_S1AP_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ENB_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ENB_UE_S1AP_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 24, -1, 0l, 16777215l } /* (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 = { + "S1ap-ENB-UE-S1AP-ID", + "S1ap-ENB-UE-S1AP-ID", + S1ap_ENB_UE_S1AP_ID_free, + S1ap_ENB_UE_S1AP_ID_print, + S1ap_ENB_UE_S1AP_ID_constraint, + S1ap_ENB_UE_S1AP_ID_decode_ber, + S1ap_ENB_UE_S1AP_ID_encode_der, + S1ap_ENB_UE_S1AP_ID_decode_xer, + S1ap_ENB_UE_S1AP_ID_encode_xer, + S1ap_ENB_UE_S1AP_ID_decode_uper, + S1ap_ENB_UE_S1AP_ID_encode_uper, + S1ap_ENB_UE_S1AP_ID_decode_aper, + S1ap_ENB_UE_S1AP_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ENB_UE_S1AP_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.h b/lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.h new file mode 100644 index 0000000000..01250ab259 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENB-UE-S1AP-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-ENBConfigurationTransfer.c b/lib/asn/asn1c/S1ap-ENBConfigurationTransfer.c new file mode 100644 index 0000000000..00756ebb85 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBConfigurationTransfer.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBConfigurationTransfer.h" + +static int +memb_s1ap_ENBConfigurationTransfer_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_ENBConfigurationTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_ENBConfigurationTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_ENBConfigurationTransfer_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_ENBConfigurationTransfer_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_ENBConfigurationTransfer_ies_specs_2 = { + sizeof(struct S1ap_ENBConfigurationTransfer__s1ap_ENBConfigurationTransfer_ies), + offsetof(struct S1ap_ENBConfigurationTransfer__s1ap_ENBConfigurationTransfer_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_ENBConfigurationTransfer_ies_2 = { + "s1ap-ENBConfigurationTransfer-ies", + "s1ap-ENBConfigurationTransfer-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_ENBConfigurationTransfer_ies_tags_2, + sizeof(asn_DEF_s1ap_ENBConfigurationTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBConfigurationTransfer_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_ENBConfigurationTransfer_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_ENBConfigurationTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBConfigurationTransfer_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_ENBConfigurationTransfer_ies_constr_2, + asn_MBR_s1ap_ENBConfigurationTransfer_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_ENBConfigurationTransfer_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_ENBConfigurationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ENBConfigurationTransfer, s1ap_ENBConfigurationTransfer_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_ENBConfigurationTransfer_ies_2, + memb_s1ap_ENBConfigurationTransfer_ies_constraint_1, + &asn_PER_memb_s1ap_ENBConfigurationTransfer_ies_constr_2, + 0, + "s1ap-ENBConfigurationTransfer-ies" + }, +}; +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 } /* s1ap-ENBConfigurationTransfer-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENBConfigurationTransfer = { + "S1ap-ENBConfigurationTransfer", + "S1ap-ENBConfigurationTransfer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ENBConfigurationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1ap_ENBConfigurationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBConfigurationTransfer.h b/lib/asn/asn1c/S1ap-ENBConfigurationTransfer.h new file mode 100644 index 0000000000..a741725d6e --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBConfigurationTransfer.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ENBConfigurationTransfer_H_ +#define _S1ap_ENBConfigurationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-ENBConfigurationTransfer */ +typedef struct S1ap_ENBConfigurationTransfer { + struct S1ap_ENBConfigurationTransfer__s1ap_ENBConfigurationTransfer_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_ENBConfigurationTransfer_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_ENBConfigurationTransfer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBConfigurationUpdate.c b/lib/asn/asn1c/S1ap-ENBConfigurationUpdate.c new file mode 100644 index 0000000000..82af5320e6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBConfigurationUpdate.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBConfigurationUpdate.h" + +static int +memb_s1ap_ENBConfigurationUpdate_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_ENBConfigurationUpdate_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_ENBConfigurationUpdate_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_ENBConfigurationUpdate_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_ENBConfigurationUpdate_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_ENBConfigurationUpdate_ies_specs_2 = { + sizeof(struct S1ap_ENBConfigurationUpdate__s1ap_ENBConfigurationUpdate_ies), + offsetof(struct S1ap_ENBConfigurationUpdate__s1ap_ENBConfigurationUpdate_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_ENBConfigurationUpdate_ies_2 = { + "s1ap-ENBConfigurationUpdate-ies", + "s1ap-ENBConfigurationUpdate-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_ENBConfigurationUpdate_ies_tags_2, + sizeof(asn_DEF_s1ap_ENBConfigurationUpdate_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBConfigurationUpdate_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_ENBConfigurationUpdate_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_ENBConfigurationUpdate_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBConfigurationUpdate_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_ENBConfigurationUpdate_ies_constr_2, + asn_MBR_s1ap_ENBConfigurationUpdate_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_ENBConfigurationUpdate_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_ENBConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ENBConfigurationUpdate, s1ap_ENBConfigurationUpdate_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_ENBConfigurationUpdate_ies_2, + memb_s1ap_ENBConfigurationUpdate_ies_constraint_1, + &asn_PER_memb_s1ap_ENBConfigurationUpdate_ies_constr_2, + 0, + "s1ap-ENBConfigurationUpdate-ies" + }, +}; +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 } /* s1ap-ENBConfigurationUpdate-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENBConfigurationUpdate = { + "S1ap-ENBConfigurationUpdate", + "S1ap-ENBConfigurationUpdate", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ENBConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_S1ap_ENBConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBConfigurationUpdate.h b/lib/asn/asn1c/S1ap-ENBConfigurationUpdate.h new file mode 100644 index 0000000000..f894fd984d --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBConfigurationUpdate.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ENBConfigurationUpdate_H_ +#define _S1ap_ENBConfigurationUpdate_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-ENBConfigurationUpdate */ +typedef struct S1ap_ENBConfigurationUpdate { + struct S1ap_ENBConfigurationUpdate__s1ap_ENBConfigurationUpdate_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_ENBConfigurationUpdate_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_ENBConfigurationUpdate_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBConfigurationUpdateAcknowledge.c b/lib/asn/asn1c/S1ap-ENBConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000000..9ec3a1735f --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBConfigurationUpdateAcknowledge.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBConfigurationUpdateAcknowledge.h" + +static int +memb_s1ap_ENBConfigurationUpdateAcknowledge_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_ENBConfigurationUpdateAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_ENBConfigurationUpdateAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_ENBConfigurationUpdateAcknowledge_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_ENBConfigurationUpdateAcknowledge_ies_specs_2 = { + sizeof(struct S1ap_ENBConfigurationUpdateAcknowledge__s1ap_ENBConfigurationUpdateAcknowledge_ies), + offsetof(struct S1ap_ENBConfigurationUpdateAcknowledge__s1ap_ENBConfigurationUpdateAcknowledge_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_2 = { + "s1ap-ENBConfigurationUpdateAcknowledge-ies", + "s1ap-ENBConfigurationUpdateAcknowledge-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_tags_2, + sizeof(asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_ENBConfigurationUpdateAcknowledge_ies_constr_2, + asn_MBR_s1ap_ENBConfigurationUpdateAcknowledge_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_ENBConfigurationUpdateAcknowledge_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_ENBConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ENBConfigurationUpdateAcknowledge, s1ap_ENBConfigurationUpdateAcknowledge_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_ENBConfigurationUpdateAcknowledge_ies_2, + memb_s1ap_ENBConfigurationUpdateAcknowledge_ies_constraint_1, + &asn_PER_memb_s1ap_ENBConfigurationUpdateAcknowledge_ies_constr_2, + 0, + "s1ap-ENBConfigurationUpdateAcknowledge-ies" + }, +}; +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 } /* s1ap-ENBConfigurationUpdateAcknowledge-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENBConfigurationUpdateAcknowledge = { + "S1ap-ENBConfigurationUpdateAcknowledge", + "S1ap-ENBConfigurationUpdateAcknowledge", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ENBConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1ap_ENBConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBConfigurationUpdateAcknowledge.h b/lib/asn/asn1c/S1ap-ENBConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000000..18febc6d7e --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBConfigurationUpdateAcknowledge.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ENBConfigurationUpdateAcknowledge_H_ +#define _S1ap_ENBConfigurationUpdateAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-ENBConfigurationUpdateAcknowledge */ +typedef struct S1ap_ENBConfigurationUpdateAcknowledge { + struct S1ap_ENBConfigurationUpdateAcknowledge__s1ap_ENBConfigurationUpdateAcknowledge_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_ENBConfigurationUpdateAcknowledge_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_ENBConfigurationUpdateAcknowledge_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBConfigurationUpdateFailure.c b/lib/asn/asn1c/S1ap-ENBConfigurationUpdateFailure.c new file mode 100644 index 0000000000..8f1bc1dce8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBConfigurationUpdateFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBConfigurationUpdateFailure.h" + +static int +memb_s1ap_ENBConfigurationUpdateFailure_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_ENBConfigurationUpdateFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_ENBConfigurationUpdateFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_ENBConfigurationUpdateFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_ENBConfigurationUpdateFailure_ies_specs_2 = { + sizeof(struct S1ap_ENBConfigurationUpdateFailure__s1ap_ENBConfigurationUpdateFailure_ies), + offsetof(struct S1ap_ENBConfigurationUpdateFailure__s1ap_ENBConfigurationUpdateFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_2 = { + "s1ap-ENBConfigurationUpdateFailure-ies", + "s1ap-ENBConfigurationUpdateFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_tags_2, + sizeof(asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_ENBConfigurationUpdateFailure_ies_constr_2, + asn_MBR_s1ap_ENBConfigurationUpdateFailure_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_ENBConfigurationUpdateFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_ENBConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ENBConfigurationUpdateFailure, s1ap_ENBConfigurationUpdateFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_ENBConfigurationUpdateFailure_ies_2, + memb_s1ap_ENBConfigurationUpdateFailure_ies_constraint_1, + &asn_PER_memb_s1ap_ENBConfigurationUpdateFailure_ies_constr_2, + 0, + "s1ap-ENBConfigurationUpdateFailure-ies" + }, +}; +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 } /* s1ap-ENBConfigurationUpdateFailure-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENBConfigurationUpdateFailure = { + "S1ap-ENBConfigurationUpdateFailure", + "S1ap-ENBConfigurationUpdateFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ENBConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_S1ap_ENBConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBConfigurationUpdateFailure.h b/lib/asn/asn1c/S1ap-ENBConfigurationUpdateFailure.h new file mode 100644 index 0000000000..1b0cc66cc3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBConfigurationUpdateFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ENBConfigurationUpdateFailure_H_ +#define _S1ap_ENBConfigurationUpdateFailure_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-ENBConfigurationUpdateFailure */ +typedef struct S1ap_ENBConfigurationUpdateFailure { + struct S1ap_ENBConfigurationUpdateFailure__s1ap_ENBConfigurationUpdateFailure_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_ENBConfigurationUpdateFailure_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_ENBConfigurationUpdateFailure_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBDirectInformationTransfer.c b/lib/asn/asn1c/S1ap-ENBDirectInformationTransfer.c new file mode 100644 index 0000000000..c54db06712 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBDirectInformationTransfer.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBDirectInformationTransfer.h" + +static int +memb_s1ap_ENBDirectInformationTransfer_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_ENBDirectInformationTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_ENBDirectInformationTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_ENBDirectInformationTransfer_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_ENBDirectInformationTransfer_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_ENBDirectInformationTransfer_ies_specs_2 = { + sizeof(struct S1ap_ENBDirectInformationTransfer__s1ap_ENBDirectInformationTransfer_ies), + offsetof(struct S1ap_ENBDirectInformationTransfer__s1ap_ENBDirectInformationTransfer_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_ENBDirectInformationTransfer_ies_2 = { + "s1ap-ENBDirectInformationTransfer-ies", + "s1ap-ENBDirectInformationTransfer-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_ENBDirectInformationTransfer_ies_tags_2, + sizeof(asn_DEF_s1ap_ENBDirectInformationTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBDirectInformationTransfer_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_ENBDirectInformationTransfer_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_ENBDirectInformationTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBDirectInformationTransfer_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_ENBDirectInformationTransfer_ies_constr_2, + asn_MBR_s1ap_ENBDirectInformationTransfer_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_ENBDirectInformationTransfer_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_ENBDirectInformationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ENBDirectInformationTransfer, s1ap_ENBDirectInformationTransfer_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_ENBDirectInformationTransfer_ies_2, + memb_s1ap_ENBDirectInformationTransfer_ies_constraint_1, + &asn_PER_memb_s1ap_ENBDirectInformationTransfer_ies_constr_2, + 0, + "s1ap-ENBDirectInformationTransfer-ies" + }, +}; +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 } /* s1ap-ENBDirectInformationTransfer-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENBDirectInformationTransfer = { + "S1ap-ENBDirectInformationTransfer", + "S1ap-ENBDirectInformationTransfer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ENBDirectInformationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1ap_ENBDirectInformationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBDirectInformationTransfer.h b/lib/asn/asn1c/S1ap-ENBDirectInformationTransfer.h new file mode 100644 index 0000000000..73d604ba7c --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBDirectInformationTransfer.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ENBDirectInformationTransfer_H_ +#define _S1ap_ENBDirectInformationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-ENBDirectInformationTransfer */ +typedef struct S1ap_ENBDirectInformationTransfer { + struct S1ap_ENBDirectInformationTransfer__s1ap_ENBDirectInformationTransfer_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_ENBDirectInformationTransfer_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_ENBDirectInformationTransfer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBStatusTransfer.c b/lib/asn/asn1c/S1ap-ENBStatusTransfer.c new file mode 100644 index 0000000000..d37c4ddea6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBStatusTransfer.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBStatusTransfer.h" + +static int +memb_s1ap_ENBStatusTransfer_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_ENBStatusTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_ENBStatusTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_ENBStatusTransfer_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_ENBStatusTransfer_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_ENBStatusTransfer_ies_specs_2 = { + sizeof(struct S1ap_ENBStatusTransfer__s1ap_ENBStatusTransfer_ies), + offsetof(struct S1ap_ENBStatusTransfer__s1ap_ENBStatusTransfer_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_ENBStatusTransfer_ies_2 = { + "s1ap-ENBStatusTransfer-ies", + "s1ap-ENBStatusTransfer-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_ENBStatusTransfer_ies_tags_2, + sizeof(asn_DEF_s1ap_ENBStatusTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBStatusTransfer_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_ENBStatusTransfer_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_ENBStatusTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_ENBStatusTransfer_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_ENBStatusTransfer_ies_constr_2, + asn_MBR_s1ap_ENBStatusTransfer_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_ENBStatusTransfer_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_ENBStatusTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ENBStatusTransfer, s1ap_ENBStatusTransfer_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_ENBStatusTransfer_ies_2, + memb_s1ap_ENBStatusTransfer_ies_constraint_1, + &asn_PER_memb_s1ap_ENBStatusTransfer_ies_constr_2, + 0, + "s1ap-ENBStatusTransfer-ies" + }, +}; +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 } /* s1ap-ENBStatusTransfer-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENBStatusTransfer = { + "S1ap-ENBStatusTransfer", + "S1ap-ENBStatusTransfer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ENBStatusTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1ap_ENBStatusTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBStatusTransfer.h b/lib/asn/asn1c/S1ap-ENBStatusTransfer.h new file mode 100644 index 0000000000..9f35933029 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBStatusTransfer.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ENBStatusTransfer_H_ +#define _S1ap_ENBStatusTransfer_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-ENBStatusTransfer */ +typedef struct S1ap_ENBStatusTransfer { + struct S1ap_ENBStatusTransfer__s1ap_ENBStatusTransfer_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_ENBStatusTransfer_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_ENBStatusTransfer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBX2ExtTLA.c b/lib/asn/asn1c/S1ap-ENBX2ExtTLA.c new file mode 100644 index 0000000000..1a0fad2e68 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBX2ExtTLA.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBX2ExtTLA.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "gTPTLAa" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_ENBX2ExtTLA, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P75, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ENBX2ExtTLA = { + "S1ap-ENBX2ExtTLA", + "S1ap-ENBX2ExtTLA", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ENBX2ExtTLA_1, + 3, /* Elements count */ + &asn_SPC_S1ap_ENBX2ExtTLA_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBX2ExtTLA.h b/lib/asn/asn1c/S1ap-ENBX2ExtTLA.h new file mode 100644 index 0000000000..94bb619aed --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBX2ExtTLA.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-ENBX2ExtTLA */ +typedef struct S1ap_ENBX2ExtTLA { + S1ap_TransportLayerAddress_t *iPsecTLA /* OPTIONAL */; + struct S1ap_ENBX2GTPTLAs *gTPTLAa /* OPTIONAL */; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-ENBX2GTPTLAs.h" +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_ENBX2ExtTLA_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBX2ExtTLAs.c b/lib/asn/asn1c/S1ap-ENBX2ExtTLAs.c new file mode 100644 index 0000000000..e7e211c2b0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBX2ExtTLAs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBX2ExtTLAs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ENBX2ExtTLAs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-ENBX2ExtTLAs", + "S1ap-ENBX2ExtTLAs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ENBX2ExtTLAs_constr_1, + asn_MBR_S1ap_ENBX2ExtTLAs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ENBX2ExtTLAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBX2ExtTLAs.h b/lib/asn/asn1c/S1ap-ENBX2ExtTLAs.h new file mode 100644 index 0000000000..de1e50ae18 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBX2ExtTLAs.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 + +/* Referred external types */ +#include "S1ap-ENBX2ExtTLA.h" + +#endif /* _S1ap_ENBX2ExtTLAs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBX2GTPTLAs.c b/lib/asn/asn1c/S1ap-ENBX2GTPTLAs.c new file mode 100644 index 0000000000..582809db00 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBX2GTPTLAs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBX2GTPTLAs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ENBX2GTPTLAs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ENBX2GTPTLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ENBX2GTPTLAs", + "S1ap-ENBX2GTPTLAs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ENBX2GTPTLAs_constr_1, + asn_MBR_S1ap_ENBX2GTPTLAs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ENBX2GTPTLAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBX2GTPTLAs.h b/lib/asn/asn1c/S1ap-ENBX2GTPTLAs.h new file mode 100644 index 0000000000..524da1f205 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBX2GTPTLAs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ENBX2GTPTLAs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBX2TLAs.c b/lib/asn/asn1c/S1ap-ENBX2TLAs.c new file mode 100644 index 0000000000..59096d5dd7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBX2TLAs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ENBX2TLAs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ENBX2TLAs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ENBX2TLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ENBX2TLAs", + "S1ap-ENBX2TLAs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ENBX2TLAs_constr_1, + asn_MBR_S1ap_ENBX2TLAs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ENBX2TLAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBX2TLAs.h b/lib/asn/asn1c/S1ap-ENBX2TLAs.h new file mode 100644 index 0000000000..af3c9b7935 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBX2TLAs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ENBX2TLAs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ENBname.c b/lib/asn/asn1c/S1ap-ENBname.c new file mode 100644 index 0000000000..9f1e8617a7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBname.c @@ -0,0 +1,211 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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(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 >= 1LL && size <= 150LL) + && !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 void +S1ap_ENBname_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_PrintableString.free_struct; + td->print_struct = asn_DEF_PrintableString.print_struct; + td->check_constraints = asn_DEF_PrintableString.check_constraints; + td->ber_decoder = asn_DEF_PrintableString.ber_decoder; + td->der_encoder = asn_DEF_PrintableString.der_encoder; + td->xer_decoder = asn_DEF_PrintableString.xer_decoder; + td->xer_encoder = asn_DEF_PrintableString.xer_encoder; + td->uper_decoder = asn_DEF_PrintableString.uper_decoder; + td->uper_encoder = asn_DEF_PrintableString.uper_encoder; + td->aper_decoder = asn_DEF_PrintableString.aper_decoder; + td->aper_encoder = asn_DEF_PrintableString.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_PrintableString.per_constraints; + td->elements = asn_DEF_PrintableString.elements; + td->elements_count = asn_DEF_PrintableString.elements_count; + td->specifics = asn_DEF_PrintableString.specifics; +} + +void +S1ap_ENBname_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ENBname_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ENBname_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ENBname_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ENBname_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ENBname_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ENBname_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ENBname_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ENBname_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ENBname_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ENBname_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ENBname_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32l, 122l } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1l, 150l } /* (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 = { + "S1ap-ENBname", + "S1ap-ENBname", + S1ap_ENBname_free, + S1ap_ENBname_print, + S1ap_ENBname_constraint, + S1ap_ENBname_decode_ber, + S1ap_ENBname_encode_der, + S1ap_ENBname_decode_xer, + S1ap_ENBname_encode_xer, + S1ap_ENBname_decode_uper, + S1ap_ENBname_encode_uper, + S1ap_ENBname_decode_aper, + S1ap_ENBname_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ENBname_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-ENBname.h b/lib/asn/asn1c/S1ap-ENBname.h new file mode 100644 index 0000000000..9835c07269 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ENBname.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-EPLMNs.c b/lib/asn/asn1c/S1ap-EPLMNs.c new file mode 100644 index 0000000000..0811b8f3b2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EPLMNs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EPLMNs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_EPLMNs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1l, 15l } /* (SIZE(1..15)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_EPLMNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-EPLMNs", + "S1ap-EPLMNs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_EPLMNs_constr_1, + asn_MBR_S1ap_EPLMNs_1, + 1, /* Single element */ + &asn_SPC_S1ap_EPLMNs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-EPLMNs.h b/lib/asn/asn1c/S1ap-EPLMNs.h new file mode 100644 index 0000000000..87c0ea1f16 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EPLMNs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_EPLMNs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-EUTRAN-CGI.c b/lib/asn/asn1c/S1ap-EUTRAN-CGI.c new file mode 100644 index 0000000000..a3be7ee575 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EUTRAN-CGI.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EUTRAN-CGI.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P37, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_EUTRAN_CGI = { + "S1ap-EUTRAN-CGI", + "S1ap-EUTRAN-CGI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_EUTRAN_CGI_1, + 3, /* Elements count */ + &asn_SPC_S1ap_EUTRAN_CGI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-EUTRAN-CGI.h b/lib/asn/asn1c/S1ap-EUTRAN-CGI.h new file mode 100644 index 0000000000..8f6ec634bc --- /dev/null +++ b/lib/asn/asn1c/S1ap-EUTRAN-CGI.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-EUTRAN-CGI */ +typedef struct S1ap_EUTRAN_CGI { + S1ap_PLMNidentity_t pLMNidentity; + S1ap_CellIdentity_t cell_ID; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_EUTRAN_CGI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-EUTRANRoundTripDelayEstimationInfo.c b/lib/asn/asn1c/S1ap-EUTRANRoundTripDelayEstimationInfo.c new file mode 100644 index 0000000000..e1be64bdab --- /dev/null +++ b/lib/asn/asn1c/S1ap-EUTRANRoundTripDelayEstimationInfo.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EUTRANRoundTripDelayEstimationInfo.h" + +int +S1ap_EUTRANRoundTripDelayEstimationInfo_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 2047LL)) { + /* 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 void +S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_EUTRANRoundTripDelayEstimationInfo_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_EUTRANRoundTripDelayEstimationInfo_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_EUTRANRoundTripDelayEstimationInfo_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_EUTRANRoundTripDelayEstimationInfo_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_EUTRANRoundTripDelayEstimationInfo_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_EUTRANRoundTripDelayEstimationInfo_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_EUTRANRoundTripDelayEstimationInfo_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_EUTRANRoundTripDelayEstimationInfo_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_EUTRANRoundTripDelayEstimationInfo_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_EUTRANRoundTripDelayEstimationInfo_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_EUTRANRoundTripDelayEstimationInfo_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_EUTRANRoundTripDelayEstimationInfo_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0l, 2047l } /* (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 = { + "S1ap-EUTRANRoundTripDelayEstimationInfo", + "S1ap-EUTRANRoundTripDelayEstimationInfo", + S1ap_EUTRANRoundTripDelayEstimationInfo_free, + S1ap_EUTRANRoundTripDelayEstimationInfo_print, + S1ap_EUTRANRoundTripDelayEstimationInfo_constraint, + S1ap_EUTRANRoundTripDelayEstimationInfo_decode_ber, + S1ap_EUTRANRoundTripDelayEstimationInfo_encode_der, + S1ap_EUTRANRoundTripDelayEstimationInfo_decode_xer, + S1ap_EUTRANRoundTripDelayEstimationInfo_encode_xer, + S1ap_EUTRANRoundTripDelayEstimationInfo_decode_uper, + S1ap_EUTRANRoundTripDelayEstimationInfo_encode_uper, + S1ap_EUTRANRoundTripDelayEstimationInfo_decode_aper, + S1ap_EUTRANRoundTripDelayEstimationInfo_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_EUTRANRoundTripDelayEstimationInfo_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-EUTRANRoundTripDelayEstimationInfo.h b/lib/asn/asn1c/S1ap-EUTRANRoundTripDelayEstimationInfo.h new file mode 100644 index 0000000000..105f232725 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EUTRANRoundTripDelayEstimationInfo.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-EmergencyAreaID-Broadcast-Item.c b/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast-Item.c new file mode 100644 index 0000000000..87d0ef4ea6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EmergencyAreaID-Broadcast-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P28, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_EmergencyAreaID_Broadcast_Item = { + "S1ap-EmergencyAreaID-Broadcast-Item", + "S1ap-EmergencyAreaID-Broadcast-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_EmergencyAreaID_Broadcast_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_EmergencyAreaID_Broadcast_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast-Item.h b/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast-Item.h new file mode 100644 index 0000000000..4b4d898e7b --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-EmergencyAreaID-Broadcast-Item */ +typedef struct S1ap_EmergencyAreaID_Broadcast_Item { + S1ap_EmergencyAreaID_t emergencyAreaID; + S1ap_CompletedCellinEAI_t completedCellinEAI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_EmergencyAreaID_Broadcast_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast.c b/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast.c new file mode 100644 index 0000000000..47cb7a31f0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EmergencyAreaID-Broadcast.h" + +static asn_per_constraints_t asn_PER_type_S1ap_EmergencyAreaID_Broadcast_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_EmergencyAreaID_Broadcast_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-EmergencyAreaID-Broadcast", + "S1ap-EmergencyAreaID-Broadcast", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_EmergencyAreaID_Broadcast_constr_1, + asn_MBR_S1ap_EmergencyAreaID_Broadcast_1, + 1, /* Single element */ + &asn_SPC_S1ap_EmergencyAreaID_Broadcast_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast.h b/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast.h new file mode 100644 index 0000000000..a50cbe17cb --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID-Broadcast.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-EmergencyAreaID-Broadcast-Item.h" + +#endif /* _S1ap_EmergencyAreaID_Broadcast_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled-Item.c b/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled-Item.c new file mode 100644 index 0000000000..1fe29ec974 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EmergencyAreaID-Cancelled-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P29, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_EmergencyAreaID_Cancelled_Item = { + "S1ap-EmergencyAreaID-Cancelled-Item", + "S1ap-EmergencyAreaID-Cancelled-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_EmergencyAreaID_Cancelled_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_EmergencyAreaID_Cancelled_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled-Item.h b/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled-Item.h new file mode 100644 index 0000000000..47f02ab13c --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-EmergencyAreaID-Cancelled-Item */ +typedef struct S1ap_EmergencyAreaID_Cancelled_Item { + S1ap_EmergencyAreaID_t emergencyAreaID; + S1ap_CancelledCellinEAI_t cancelledCellinEAI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_EmergencyAreaID_Cancelled_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled.c b/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled.c new file mode 100644 index 0000000000..2007ec4dd4 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EmergencyAreaID-Cancelled.h" + +static asn_per_constraints_t asn_PER_type_S1ap_EmergencyAreaID_Cancelled_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_EmergencyAreaID_Cancelled_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-EmergencyAreaID-Cancelled", + "S1ap-EmergencyAreaID-Cancelled", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_EmergencyAreaID_Cancelled_constr_1, + asn_MBR_S1ap_EmergencyAreaID_Cancelled_1, + 1, /* Single element */ + &asn_SPC_S1ap_EmergencyAreaID_Cancelled_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled.h b/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled.h new file mode 100644 index 0000000000..07601b024a --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID-Cancelled.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-EmergencyAreaID-Cancelled-Item.h" + +#endif /* _S1ap_EmergencyAreaID_Cancelled_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID.c b/lib/asn/asn1c/S1ap-EmergencyAreaID.c new file mode 100644 index 0000000000..7513588eae --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EmergencyAreaID.h" + +int +S1ap_EmergencyAreaID_constraint(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 == 3LL)) { + /* 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 void +S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_EmergencyAreaID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_EmergencyAreaID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_EmergencyAreaID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_EmergencyAreaID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_EmergencyAreaID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_EmergencyAreaID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_EmergencyAreaID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_EmergencyAreaID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_EmergencyAreaID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_EmergencyAreaID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_EmergencyAreaID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_EmergencyAreaID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3l, 3l } /* (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 = { + "S1ap-EmergencyAreaID", + "S1ap-EmergencyAreaID", + S1ap_EmergencyAreaID_free, + S1ap_EmergencyAreaID_print, + S1ap_EmergencyAreaID_constraint, + S1ap_EmergencyAreaID_decode_ber, + S1ap_EmergencyAreaID_encode_der, + S1ap_EmergencyAreaID_decode_xer, + S1ap_EmergencyAreaID_encode_xer, + S1ap_EmergencyAreaID_decode_uper, + S1ap_EmergencyAreaID_encode_uper, + S1ap_EmergencyAreaID_decode_aper, + S1ap_EmergencyAreaID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_EmergencyAreaID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaID.h b/lib/asn/asn1c/S1ap-EmergencyAreaID.h new file mode 100644 index 0000000000..72b8064898 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-EmergencyAreaIDList.c b/lib/asn/asn1c/S1ap-EmergencyAreaIDList.c new file mode 100644 index 0000000000..e9d6112ea6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaIDList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EmergencyAreaIDList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_EmergencyAreaIDList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_EmergencyAreaIDList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-EmergencyAreaIDList", + "S1ap-EmergencyAreaIDList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_EmergencyAreaIDList_constr_1, + asn_MBR_S1ap_EmergencyAreaIDList_1, + 1, /* Single element */ + &asn_SPC_S1ap_EmergencyAreaIDList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-EmergencyAreaIDList.h b/lib/asn/asn1c/S1ap-EmergencyAreaIDList.h new file mode 100644 index 0000000000..2882959484 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EmergencyAreaIDList.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_EmergencyAreaIDList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-EncryptionAlgorithms.c b/lib/asn/asn1c/S1ap-EncryptionAlgorithms.c new file mode 100644 index 0000000000..b1b0db458c --- /dev/null +++ b/lib/asn/asn1c/S1ap-EncryptionAlgorithms.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EncryptionAlgorithms.h" + +int +S1ap_EncryptionAlgorithms_constraint(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 == 16LL)) { + /* 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 void +S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_EncryptionAlgorithms_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_EncryptionAlgorithms_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_EncryptionAlgorithms_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_EncryptionAlgorithms_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_EncryptionAlgorithms_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_EncryptionAlgorithms_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_EncryptionAlgorithms_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_EncryptionAlgorithms_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_EncryptionAlgorithms_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_EncryptionAlgorithms_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_EncryptionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_EncryptionAlgorithms_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16l, 16l } /* (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 = { + "S1ap-EncryptionAlgorithms", + "S1ap-EncryptionAlgorithms", + S1ap_EncryptionAlgorithms_free, + S1ap_EncryptionAlgorithms_print, + S1ap_EncryptionAlgorithms_constraint, + S1ap_EncryptionAlgorithms_decode_ber, + S1ap_EncryptionAlgorithms_encode_der, + S1ap_EncryptionAlgorithms_decode_xer, + S1ap_EncryptionAlgorithms_encode_xer, + S1ap_EncryptionAlgorithms_decode_uper, + S1ap_EncryptionAlgorithms_encode_uper, + S1ap_EncryptionAlgorithms_decode_aper, + S1ap_EncryptionAlgorithms_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_EncryptionAlgorithms_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-EncryptionAlgorithms.h b/lib/asn/asn1c/S1ap-EncryptionAlgorithms.h new file mode 100644 index 0000000000..0baef881da --- /dev/null +++ b/lib/asn/asn1c/S1ap-EncryptionAlgorithms.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-ErrorIndication.c b/lib/asn/asn1c/S1ap-ErrorIndication.c new file mode 100644 index 0000000000..32f33dd573 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ErrorIndication.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ErrorIndication.h" + +static int +memb_s1ap_ErrorIndication_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_ErrorIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_ErrorIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_ErrorIndication_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_ErrorIndication_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_ErrorIndication_ies_specs_2 = { + sizeof(struct S1ap_ErrorIndication__s1ap_ErrorIndication_ies), + offsetof(struct S1ap_ErrorIndication__s1ap_ErrorIndication_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_ErrorIndication_ies_2 = { + "s1ap-ErrorIndication-ies", + "s1ap-ErrorIndication-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_ErrorIndication_ies_tags_2, + sizeof(asn_DEF_s1ap_ErrorIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_ErrorIndication_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_ErrorIndication_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_ErrorIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_ErrorIndication_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_ErrorIndication_ies_constr_2, + asn_MBR_s1ap_ErrorIndication_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_ErrorIndication_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_ErrorIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ErrorIndication, s1ap_ErrorIndication_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_ErrorIndication_ies_2, + memb_s1ap_ErrorIndication_ies_constraint_1, + &asn_PER_memb_s1ap_ErrorIndication_ies_constr_2, + 0, + "s1ap-ErrorIndication-ies" + }, +}; +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 } /* s1ap-ErrorIndication-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ErrorIndication = { + "S1ap-ErrorIndication", + "S1ap-ErrorIndication", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ErrorIndication_1, + 1, /* Elements count */ + &asn_SPC_S1ap_ErrorIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ErrorIndication.h b/lib/asn/asn1c/S1ap-ErrorIndication.h new file mode 100644 index 0000000000..2851f0ade1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ErrorIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ErrorIndication_H_ +#define _S1ap_ErrorIndication_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-ErrorIndication */ +typedef struct S1ap_ErrorIndication { + struct S1ap_ErrorIndication__s1ap_ErrorIndication_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_ErrorIndication_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_ErrorIndication_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-EventType.c b/lib/asn/asn1c/S1ap-EventType.c new file mode 100644 index 0000000000..486e051881 --- /dev/null +++ b/lib/asn/asn1c/S1ap-EventType.c @@ -0,0 +1,170 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-EventType.h" + +int +S1ap_EventType_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_EventType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_EventType_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_EventType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_EventType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_EventType_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_EventType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_EventType_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_EventType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_EventType_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_EventType_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_EventType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_EventType_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_EventType_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (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 */ +}; +static 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 = { + "S1ap-EventType", + "S1ap-EventType", + S1ap_EventType_free, + S1ap_EventType_print, + S1ap_EventType_constraint, + S1ap_EventType_decode_ber, + S1ap_EventType_encode_der, + S1ap_EventType_decode_xer, + S1ap_EventType_encode_xer, + S1ap_EventType_decode_uper, + S1ap_EventType_encode_uper, + S1ap_EventType_decode_aper, + S1ap_EventType_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_EventType_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_EventType_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-EventType.h b/lib/asn/asn1c/S1ap-EventType.h new file mode 100644 index 0000000000..9f9c01ed0f --- /dev/null +++ b/lib/asn/asn1c/S1ap-EventType.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_EventType; +asn_struct_free_f S1ap_EventType_free; +asn_struct_print_f S1ap_EventType_print; +asn_constr_check_f S1ap_EventType_constraint; +ber_type_decoder_f S1ap_EventType_decode_ber; +der_type_encoder_f S1ap_EventType_encode_der; +xer_type_decoder_f S1ap_EventType_decode_xer; +xer_type_encoder_f S1ap_EventType_encode_xer; +per_type_decoder_f S1ap_EventType_decode_uper; +per_type_encoder_f S1ap_EventType_encode_uper; +per_type_decoder_f S1ap_EventType_decode_aper; +per_type_encoder_f S1ap_EventType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_EventType_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ExtendedRNC-ID.c b/lib/asn/asn1c/S1ap-ExtendedRNC-ID.c new file mode 100644 index 0000000000..87cc848df6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ExtendedRNC-ID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ExtendedRNC-ID.h" + +int +S1ap_ExtendedRNC_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 4096LL && value <= 65535LL)) { + /* 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 void +S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_ExtendedRNC_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ExtendedRNC_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ExtendedRNC_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ExtendedRNC_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ExtendedRNC_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ExtendedRNC_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ExtendedRNC_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ExtendedRNC_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ExtendedRNC_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ExtendedRNC_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ExtendedRNC_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 4096l, 65535l } /* (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 = { + "S1ap-ExtendedRNC-ID", + "S1ap-ExtendedRNC-ID", + S1ap_ExtendedRNC_ID_free, + S1ap_ExtendedRNC_ID_print, + S1ap_ExtendedRNC_ID_constraint, + S1ap_ExtendedRNC_ID_decode_ber, + S1ap_ExtendedRNC_ID_encode_der, + S1ap_ExtendedRNC_ID_decode_xer, + S1ap_ExtendedRNC_ID_encode_xer, + S1ap_ExtendedRNC_ID_decode_uper, + S1ap_ExtendedRNC_ID_encode_uper, + S1ap_ExtendedRNC_ID_decode_aper, + S1ap_ExtendedRNC_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ExtendedRNC_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-ExtendedRNC-ID.h b/lib/asn/asn1c/S1ap-ExtendedRNC-ID.h new file mode 100644 index 0000000000..ccc22738d6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ExtendedRNC-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-ExtendedRepetitionPeriod.c b/lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.c new file mode 100644 index 0000000000..438da161fb --- /dev/null +++ b/lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ExtendedRepetitionPeriod.h" + +int +S1ap_ExtendedRepetitionPeriod_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 4096LL && value <= 131071LL)) { + /* 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 void +S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_ExtendedRepetitionPeriod_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ExtendedRepetitionPeriod_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ExtendedRepetitionPeriod_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ExtendedRepetitionPeriod_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ExtendedRepetitionPeriod_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ExtendedRepetitionPeriod_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ExtendedRepetitionPeriod_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ExtendedRepetitionPeriod_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ExtendedRepetitionPeriod_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ExtendedRepetitionPeriod_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ExtendedRepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ExtendedRepetitionPeriod_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 17, -1, 4096l, 131071l } /* (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 = { + "S1ap-ExtendedRepetitionPeriod", + "S1ap-ExtendedRepetitionPeriod", + S1ap_ExtendedRepetitionPeriod_free, + S1ap_ExtendedRepetitionPeriod_print, + S1ap_ExtendedRepetitionPeriod_constraint, + S1ap_ExtendedRepetitionPeriod_decode_ber, + S1ap_ExtendedRepetitionPeriod_encode_der, + S1ap_ExtendedRepetitionPeriod_decode_xer, + S1ap_ExtendedRepetitionPeriod_encode_xer, + S1ap_ExtendedRepetitionPeriod_decode_uper, + S1ap_ExtendedRepetitionPeriod_encode_uper, + S1ap_ExtendedRepetitionPeriod_decode_aper, + S1ap_ExtendedRepetitionPeriod_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ExtendedRepetitionPeriod_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.h b/lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.h new file mode 100644 index 0000000000..36d8352215 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ExtendedRepetitionPeriod.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-ForbiddenInterRATs.c b/lib/asn/asn1c/S1ap-ForbiddenInterRATs.c new file mode 100644 index 0000000000..be0e738d11 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenInterRATs.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ForbiddenInterRATs.h" + +int +S1ap_ForbiddenInterRATs_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_ForbiddenInterRATs_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ForbiddenInterRATs_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ForbiddenInterRATs_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ForbiddenInterRATs_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ForbiddenInterRATs_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ForbiddenInterRATs_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ForbiddenInterRATs_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ForbiddenInterRATs_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ForbiddenInterRATs_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ForbiddenInterRATs_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ForbiddenInterRATs_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ForbiddenInterRATs_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (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 */ +}; +static 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 = { + "S1ap-ForbiddenInterRATs", + "S1ap-ForbiddenInterRATs", + S1ap_ForbiddenInterRATs_free, + S1ap_ForbiddenInterRATs_print, + S1ap_ForbiddenInterRATs_constraint, + S1ap_ForbiddenInterRATs_decode_ber, + S1ap_ForbiddenInterRATs_encode_der, + S1ap_ForbiddenInterRATs_decode_xer, + S1ap_ForbiddenInterRATs_encode_xer, + S1ap_ForbiddenInterRATs_decode_uper, + S1ap_ForbiddenInterRATs_encode_uper, + S1ap_ForbiddenInterRATs_decode_aper, + S1ap_ForbiddenInterRATs_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ForbiddenInterRATs_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_ForbiddenInterRATs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ForbiddenInterRATs.h b/lib/asn/asn1c/S1ap-ForbiddenInterRATs.h new file mode 100644 index 0000000000..f100ebea19 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenInterRATs.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_ForbiddenInterRATs; +asn_struct_free_f S1ap_ForbiddenInterRATs_free; +asn_struct_print_f S1ap_ForbiddenInterRATs_print; +asn_constr_check_f S1ap_ForbiddenInterRATs_constraint; +ber_type_decoder_f S1ap_ForbiddenInterRATs_decode_ber; +der_type_encoder_f S1ap_ForbiddenInterRATs_encode_der; +xer_type_decoder_f S1ap_ForbiddenInterRATs_decode_xer; +xer_type_encoder_f S1ap_ForbiddenInterRATs_encode_xer; +per_type_decoder_f S1ap_ForbiddenInterRATs_decode_uper; +per_type_encoder_f S1ap_ForbiddenInterRATs_encode_uper; +per_type_decoder_f S1ap_ForbiddenInterRATs_decode_aper; +per_type_encoder_f S1ap_ForbiddenInterRATs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ForbiddenInterRATs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ForbiddenLACs.c b/lib/asn/asn1c/S1ap-ForbiddenLACs.c new file mode 100644 index 0000000000..eb49290bae --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenLACs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ForbiddenLACs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ForbiddenLACs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 12, 12, 1l, 4096l } /* (SIZE(1..4096)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ForbiddenLACs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ForbiddenLACs", + "S1ap-ForbiddenLACs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ForbiddenLACs_constr_1, + asn_MBR_S1ap_ForbiddenLACs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ForbiddenLACs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ForbiddenLACs.h b/lib/asn/asn1c/S1ap-ForbiddenLACs.h new file mode 100644 index 0000000000..7b10e46c6e --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenLACs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ForbiddenLACs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ForbiddenLAs-Item.c b/lib/asn/asn1c/S1ap-ForbiddenLAs-Item.c new file mode 100644 index 0000000000..2c396c2819 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenLAs-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ForbiddenLAs-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P39, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ForbiddenLAs_Item = { + "S1ap-ForbiddenLAs-Item", + "S1ap-ForbiddenLAs-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ForbiddenLAs_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_ForbiddenLAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ForbiddenLAs-Item.h b/lib/asn/asn1c/S1ap-ForbiddenLAs-Item.h new file mode 100644 index 0000000000..289a8dca43 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenLAs-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-ForbiddenLAs-Item */ +typedef struct S1ap_ForbiddenLAs_Item { + S1ap_PLMNidentity_t pLMN_Identity; + S1ap_ForbiddenLACs_t forbiddenLACs; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_ForbiddenLAs_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ForbiddenLAs.c b/lib/asn/asn1c/S1ap-ForbiddenLAs.c new file mode 100644 index 0000000000..21fefb7796 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenLAs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ForbiddenLAs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ForbiddenLAs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ForbiddenLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ForbiddenLAs", + "S1ap-ForbiddenLAs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ForbiddenLAs_constr_1, + asn_MBR_S1ap_ForbiddenLAs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ForbiddenLAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ForbiddenLAs.h b/lib/asn/asn1c/S1ap-ForbiddenLAs.h new file mode 100644 index 0000000000..20c7bef1b5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenLAs.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-ForbiddenLAs-Item.h" + +#endif /* _S1ap_ForbiddenLAs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ForbiddenTACs.c b/lib/asn/asn1c/S1ap-ForbiddenTACs.c new file mode 100644 index 0000000000..78ca74be20 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenTACs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ForbiddenTACs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ForbiddenTACs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 12, 12, 1l, 4096l } /* (SIZE(1..4096)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ForbiddenTACs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ForbiddenTACs", + "S1ap-ForbiddenTACs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ForbiddenTACs_constr_1, + asn_MBR_S1ap_ForbiddenTACs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ForbiddenTACs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ForbiddenTACs.h b/lib/asn/asn1c/S1ap-ForbiddenTACs.h new file mode 100644 index 0000000000..6bfb191c69 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenTACs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ForbiddenTACs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ForbiddenTAs-Item.c b/lib/asn/asn1c/S1ap-ForbiddenTAs-Item.c new file mode 100644 index 0000000000..eacba5ffee --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenTAs-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ForbiddenTAs-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P38, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ForbiddenTAs_Item = { + "S1ap-ForbiddenTAs-Item", + "S1ap-ForbiddenTAs-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ForbiddenTAs_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_ForbiddenTAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ForbiddenTAs-Item.h b/lib/asn/asn1c/S1ap-ForbiddenTAs-Item.h new file mode 100644 index 0000000000..f146752b2e --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenTAs-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-ForbiddenTAs-Item */ +typedef struct S1ap_ForbiddenTAs_Item { + S1ap_PLMNidentity_t pLMN_Identity; + S1ap_ForbiddenTACs_t forbiddenTACs; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_ForbiddenTAs_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ForbiddenTAs.c b/lib/asn/asn1c/S1ap-ForbiddenTAs.c new file mode 100644 index 0000000000..5fa498b31e --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenTAs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ForbiddenTAs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ForbiddenTAs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ForbiddenTAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ForbiddenTAs", + "S1ap-ForbiddenTAs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ForbiddenTAs_constr_1, + asn_MBR_S1ap_ForbiddenTAs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ForbiddenTAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ForbiddenTAs.h b/lib/asn/asn1c/S1ap-ForbiddenTAs.h new file mode 100644 index 0000000000..93e72b862f --- /dev/null +++ b/lib/asn/asn1c/S1ap-ForbiddenTAs.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-ForbiddenTAs-Item.h" + +#endif /* _S1ap_ForbiddenTAs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-GBR-QosInformation.c b/lib/asn/asn1c/S1ap-GBR-QosInformation.c new file mode 100644 index 0000000000..807b66facb --- /dev/null +++ b/lib/asn/asn1c/S1ap-GBR-QosInformation.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-GBR-QosInformation.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P40, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_GBR_QosInformation = { + "S1ap-GBR-QosInformation", + "S1ap-GBR-QosInformation", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_GBR_QosInformation_1, + 5, /* Elements count */ + &asn_SPC_S1ap_GBR_QosInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-GBR-QosInformation.h b/lib/asn/asn1c/S1ap-GBR-QosInformation.h new file mode 100644 index 0000000000..d050d948eb --- /dev/null +++ b/lib/asn/asn1c/S1ap-GBR-QosInformation.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_GBR_QosInformation_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-GERAN-Cell-ID.c b/lib/asn/asn1c/S1ap-GERAN-Cell-ID.c new file mode 100644 index 0000000000..31d31e75a3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-GERAN-Cell-ID.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-GERAN-Cell-ID.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P31, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_GERAN_Cell_ID = { + "S1ap-GERAN-Cell-ID", + "S1ap-GERAN-Cell-ID", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_GERAN_Cell_ID_1, + 4, /* Elements count */ + &asn_SPC_S1ap_GERAN_Cell_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-GERAN-Cell-ID.h b/lib/asn/asn1c/S1ap-GERAN-Cell-ID.h new file mode 100644 index 0000000000..d6e60f4cd5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-GERAN-Cell-ID.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-GERAN-Cell-ID */ +typedef struct S1ap_GERAN_Cell_ID { + S1ap_LAI_t lAI; + S1ap_RAC_t rAC; + S1ap_CI_t cI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_GERAN_Cell_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-GTP-TEID.c b/lib/asn/asn1c/S1ap-GTP-TEID.c new file mode 100644 index 0000000000..55b9befb89 --- /dev/null +++ b/lib/asn/asn1c/S1ap-GTP-TEID.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-GTP-TEID.h" + +int +S1ap_GTP_TEID_constraint(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 == 4LL)) { + /* 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 void +S1ap_GTP_TEID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_GTP_TEID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_GTP_TEID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_GTP_TEID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_GTP_TEID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_GTP_TEID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_GTP_TEID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_GTP_TEID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_GTP_TEID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_GTP_TEID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_GTP_TEID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_GTP_TEID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_GTP_TEID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (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 = { + "S1ap-GTP-TEID", + "S1ap-GTP-TEID", + S1ap_GTP_TEID_free, + S1ap_GTP_TEID_print, + S1ap_GTP_TEID_constraint, + S1ap_GTP_TEID_decode_ber, + S1ap_GTP_TEID_encode_der, + S1ap_GTP_TEID_decode_xer, + S1ap_GTP_TEID_encode_xer, + S1ap_GTP_TEID_decode_uper, + S1ap_GTP_TEID_encode_uper, + S1ap_GTP_TEID_decode_aper, + S1ap_GTP_TEID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_GTP_TEID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-GTP-TEID.h b/lib/asn/asn1c/S1ap-GTP-TEID.h new file mode 100644 index 0000000000..13da90391b --- /dev/null +++ b/lib/asn/asn1c/S1ap-GTP-TEID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-GUMMEI.c b/lib/asn/asn1c/S1ap-GUMMEI.c new file mode 100644 index 0000000000..68c0e5f301 --- /dev/null +++ b/lib/asn/asn1c/S1ap-GUMMEI.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-GUMMEI.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P41, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_GUMMEI = { + "S1ap-GUMMEI", + "S1ap-GUMMEI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_GUMMEI_1, + 4, /* Elements count */ + &asn_SPC_S1ap_GUMMEI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-GUMMEI.h b/lib/asn/asn1c/S1ap-GUMMEI.h new file mode 100644 index 0000000000..978a51fb64 --- /dev/null +++ b/lib/asn/asn1c/S1ap-GUMMEI.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_GUMMEI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-GUMMEIList.c b/lib/asn/asn1c/S1ap-GUMMEIList.c new file mode 100644 index 0000000000..bb5c511dde --- /dev/null +++ b/lib/asn/asn1c/S1ap-GUMMEIList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-GUMMEIList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_GUMMEIList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-GUMMEIList", + "S1ap-GUMMEIList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_GUMMEIList_constr_1, + asn_MBR_S1ap_GUMMEIList_1, + 1, /* Single element */ + &asn_SPC_S1ap_GUMMEIList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-GUMMEIList.h b/lib/asn/asn1c/S1ap-GUMMEIList.h new file mode 100644 index 0000000000..c0c3a15f0f --- /dev/null +++ b/lib/asn/asn1c/S1ap-GUMMEIList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 + +/* Referred external types */ +#include "S1ap-GUMMEI.h" + +#endif /* _S1ap_GUMMEIList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-GWContextReleaseIndication.c b/lib/asn/asn1c/S1ap-GWContextReleaseIndication.c new file mode 100644 index 0000000000..446d88948a --- /dev/null +++ b/lib/asn/asn1c/S1ap-GWContextReleaseIndication.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-GWContextReleaseIndication.h" + +int +S1ap_GWContextReleaseIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_GWContextReleaseIndication_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_GWContextReleaseIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_GWContextReleaseIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_GWContextReleaseIndication_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_GWContextReleaseIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_GWContextReleaseIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_GWContextReleaseIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_GWContextReleaseIndication_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_GWContextReleaseIndication_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_GWContextReleaseIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_GWContextReleaseIndication_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_GWContextReleaseIndication_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-GWContextReleaseIndication", + "S1ap-GWContextReleaseIndication", + S1ap_GWContextReleaseIndication_free, + S1ap_GWContextReleaseIndication_print, + S1ap_GWContextReleaseIndication_constraint, + S1ap_GWContextReleaseIndication_decode_ber, + S1ap_GWContextReleaseIndication_encode_der, + S1ap_GWContextReleaseIndication_decode_xer, + S1ap_GWContextReleaseIndication_encode_xer, + S1ap_GWContextReleaseIndication_decode_uper, + S1ap_GWContextReleaseIndication_encode_uper, + S1ap_GWContextReleaseIndication_decode_aper, + S1ap_GWContextReleaseIndication_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_GWContextReleaseIndication_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_GWContextReleaseIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-GWContextReleaseIndication.h b/lib/asn/asn1c/S1ap-GWContextReleaseIndication.h new file mode 100644 index 0000000000..68bc825416 --- /dev/null +++ b/lib/asn/asn1c/S1ap-GWContextReleaseIndication.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Global-ENB-ID.c b/lib/asn/asn1c/S1ap-Global-ENB-ID.c new file mode 100644 index 0000000000..526d3af82b --- /dev/null +++ b/lib/asn/asn1c/S1ap-Global-ENB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Global-ENB-ID.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P32, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_Global_ENB_ID = { + "S1ap-Global-ENB-ID", + "S1ap-Global-ENB-ID", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_Global_ENB_ID_1, + 3, /* Elements count */ + &asn_SPC_S1ap_Global_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Global-ENB-ID.h b/lib/asn/asn1c/S1ap-Global-ENB-ID.h new file mode 100644 index 0000000000..cde31e0042 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Global-ENB-ID.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-Global-ENB-ID */ +typedef struct S1ap_Global_ENB_ID { + S1ap_PLMNidentity_t pLMNidentity; + S1ap_ENB_ID_t eNB_ID; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_Global_ENB_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HFN.c b/lib/asn/asn1c/S1ap-HFN.c new file mode 100644 index 0000000000..e524dcc785 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HFN.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HFN.h" + +int +S1ap_HFN_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 1048575LL)) { + /* 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 void +S1ap_HFN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_HFN_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_HFN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_HFN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_HFN_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_HFN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_HFN_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_HFN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_HFN_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_HFN_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_HFN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_HFN_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_HFN_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 20, -1, 0l, 1048575l } /* (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 = { + "S1ap-HFN", + "S1ap-HFN", + S1ap_HFN_free, + S1ap_HFN_print, + S1ap_HFN_constraint, + S1ap_HFN_decode_ber, + S1ap_HFN_encode_der, + S1ap_HFN_decode_xer, + S1ap_HFN_encode_xer, + S1ap_HFN_decode_uper, + S1ap_HFN_encode_uper, + S1ap_HFN_decode_aper, + S1ap_HFN_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_HFN_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-HFN.h b/lib/asn/asn1c/S1ap-HFN.h new file mode 100644 index 0000000000..22bf036223 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HFN.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-HandoverCancel.c b/lib/asn/asn1c/S1ap-HandoverCancel.c new file mode 100644 index 0000000000..abb0ec53df --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverCancel.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverCancel.h" + +static int +memb_s1ap_HandoverCancel_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverCancel_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverCancel_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverCancel_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverCancel_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverCancel_ies_specs_2 = { + sizeof(struct S1ap_HandoverCancel__s1ap_HandoverCancel_ies), + offsetof(struct S1ap_HandoverCancel__s1ap_HandoverCancel_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverCancel_ies_2 = { + "s1ap-HandoverCancel-ies", + "s1ap-HandoverCancel-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverCancel_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverCancel_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverCancel_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverCancel_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverCancel_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverCancel_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverCancel_ies_constr_2, + asn_MBR_s1ap_HandoverCancel_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverCancel_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverCancel_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverCancel, s1ap_HandoverCancel_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverCancel_ies_2, + memb_s1ap_HandoverCancel_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverCancel_ies_constr_2, + 0, + "s1ap-HandoverCancel-ies" + }, +}; +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 } /* s1ap-HandoverCancel-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverCancel = { + "S1ap-HandoverCancel", + "S1ap-HandoverCancel", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverCancel_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverCancel_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverCancel.h b/lib/asn/asn1c/S1ap-HandoverCancel.h new file mode 100644 index 0000000000..55dc28c2de --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverCancel.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverCancel_H_ +#define _S1ap_HandoverCancel_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverCancel */ +typedef struct S1ap_HandoverCancel { + struct S1ap_HandoverCancel__s1ap_HandoverCancel_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverCancel_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverCancel_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverCancelAcknowledge.c b/lib/asn/asn1c/S1ap-HandoverCancelAcknowledge.c new file mode 100644 index 0000000000..575fa2c402 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverCancelAcknowledge.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverCancelAcknowledge.h" + +static int +memb_s1ap_HandoverCancelAcknowledge_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverCancelAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverCancelAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverCancelAcknowledge_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverCancelAcknowledge_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverCancelAcknowledge_ies_specs_2 = { + sizeof(struct S1ap_HandoverCancelAcknowledge__s1ap_HandoverCancelAcknowledge_ies), + offsetof(struct S1ap_HandoverCancelAcknowledge__s1ap_HandoverCancelAcknowledge_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverCancelAcknowledge_ies_2 = { + "s1ap-HandoverCancelAcknowledge-ies", + "s1ap-HandoverCancelAcknowledge-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverCancelAcknowledge_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverCancelAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverCancelAcknowledge_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverCancelAcknowledge_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverCancelAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverCancelAcknowledge_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverCancelAcknowledge_ies_constr_2, + asn_MBR_s1ap_HandoverCancelAcknowledge_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverCancelAcknowledge_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverCancelAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverCancelAcknowledge, s1ap_HandoverCancelAcknowledge_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverCancelAcknowledge_ies_2, + memb_s1ap_HandoverCancelAcknowledge_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverCancelAcknowledge_ies_constr_2, + 0, + "s1ap-HandoverCancelAcknowledge-ies" + }, +}; +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 } /* s1ap-HandoverCancelAcknowledge-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverCancelAcknowledge = { + "S1ap-HandoverCancelAcknowledge", + "S1ap-HandoverCancelAcknowledge", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverCancelAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverCancelAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverCancelAcknowledge.h b/lib/asn/asn1c/S1ap-HandoverCancelAcknowledge.h new file mode 100644 index 0000000000..346873c5d9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverCancelAcknowledge.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverCancelAcknowledge_H_ +#define _S1ap_HandoverCancelAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverCancelAcknowledge */ +typedef struct S1ap_HandoverCancelAcknowledge { + struct S1ap_HandoverCancelAcknowledge__s1ap_HandoverCancelAcknowledge_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverCancelAcknowledge_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverCancelAcknowledge_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverCommand.c b/lib/asn/asn1c/S1ap-HandoverCommand.c new file mode 100644 index 0000000000..5df06d4439 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverCommand.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverCommand.h" + +static int +memb_s1ap_HandoverCommand_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverCommand_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverCommand_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverCommand_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverCommand_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverCommand_ies_specs_2 = { + sizeof(struct S1ap_HandoverCommand__s1ap_HandoverCommand_ies), + offsetof(struct S1ap_HandoverCommand__s1ap_HandoverCommand_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverCommand_ies_2 = { + "s1ap-HandoverCommand-ies", + "s1ap-HandoverCommand-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverCommand_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverCommand_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverCommand_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverCommand_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverCommand_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverCommand_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverCommand_ies_constr_2, + asn_MBR_s1ap_HandoverCommand_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverCommand_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverCommand_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverCommand, s1ap_HandoverCommand_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverCommand_ies_2, + memb_s1ap_HandoverCommand_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverCommand_ies_constr_2, + 0, + "s1ap-HandoverCommand-ies" + }, +}; +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 } /* s1ap-HandoverCommand-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverCommand = { + "S1ap-HandoverCommand", + "S1ap-HandoverCommand", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverCommand_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverCommand_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverCommand.h b/lib/asn/asn1c/S1ap-HandoverCommand.h new file mode 100644 index 0000000000..b555775e17 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverCommand.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverCommand_H_ +#define _S1ap_HandoverCommand_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverCommand */ +typedef struct S1ap_HandoverCommand { + struct S1ap_HandoverCommand__s1ap_HandoverCommand_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverCommand_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverCommand_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverFailure.c b/lib/asn/asn1c/S1ap-HandoverFailure.c new file mode 100644 index 0000000000..2f3ce0ad88 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverFailure.h" + +static int +memb_s1ap_HandoverFailure_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverFailure_ies_specs_2 = { + sizeof(struct S1ap_HandoverFailure__s1ap_HandoverFailure_ies), + offsetof(struct S1ap_HandoverFailure__s1ap_HandoverFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverFailure_ies_2 = { + "s1ap-HandoverFailure-ies", + "s1ap-HandoverFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverFailure_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverFailure_ies_constr_2, + asn_MBR_s1ap_HandoverFailure_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverFailure, s1ap_HandoverFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverFailure_ies_2, + memb_s1ap_HandoverFailure_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverFailure_ies_constr_2, + 0, + "s1ap-HandoverFailure-ies" + }, +}; +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 } /* s1ap-HandoverFailure-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverFailure = { + "S1ap-HandoverFailure", + "S1ap-HandoverFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverFailure_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverFailure.h b/lib/asn/asn1c/S1ap-HandoverFailure.h new file mode 100644 index 0000000000..788ec951cd --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverFailure_H_ +#define _S1ap_HandoverFailure_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverFailure */ +typedef struct S1ap_HandoverFailure { + struct S1ap_HandoverFailure__s1ap_HandoverFailure_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverFailure_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverFailure_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverNotify.c b/lib/asn/asn1c/S1ap-HandoverNotify.c new file mode 100644 index 0000000000..e1b20e841e --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverNotify.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverNotify.h" + +static int +memb_s1ap_HandoverNotify_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverNotify_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverNotify_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverNotify_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverNotify_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverNotify_ies_specs_2 = { + sizeof(struct S1ap_HandoverNotify__s1ap_HandoverNotify_ies), + offsetof(struct S1ap_HandoverNotify__s1ap_HandoverNotify_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverNotify_ies_2 = { + "s1ap-HandoverNotify-ies", + "s1ap-HandoverNotify-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverNotify_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverNotify_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverNotify_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverNotify_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverNotify_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverNotify_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverNotify_ies_constr_2, + asn_MBR_s1ap_HandoverNotify_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverNotify_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverNotify_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverNotify, s1ap_HandoverNotify_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverNotify_ies_2, + memb_s1ap_HandoverNotify_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverNotify_ies_constr_2, + 0, + "s1ap-HandoverNotify-ies" + }, +}; +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 } /* s1ap-HandoverNotify-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverNotify = { + "S1ap-HandoverNotify", + "S1ap-HandoverNotify", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverNotify_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverNotify_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverNotify.h b/lib/asn/asn1c/S1ap-HandoverNotify.h new file mode 100644 index 0000000000..30b3774a91 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverNotify.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverNotify_H_ +#define _S1ap_HandoverNotify_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverNotify */ +typedef struct S1ap_HandoverNotify { + struct S1ap_HandoverNotify__s1ap_HandoverNotify_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverNotify_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverNotify_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverPreparationFailure.c b/lib/asn/asn1c/S1ap-HandoverPreparationFailure.c new file mode 100644 index 0000000000..0150a6297e --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverPreparationFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverPreparationFailure.h" + +static int +memb_s1ap_HandoverPreparationFailure_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverPreparationFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverPreparationFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverPreparationFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverPreparationFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverPreparationFailure_ies_specs_2 = { + sizeof(struct S1ap_HandoverPreparationFailure__s1ap_HandoverPreparationFailure_ies), + offsetof(struct S1ap_HandoverPreparationFailure__s1ap_HandoverPreparationFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverPreparationFailure_ies_2 = { + "s1ap-HandoverPreparationFailure-ies", + "s1ap-HandoverPreparationFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverPreparationFailure_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverPreparationFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverPreparationFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverPreparationFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverPreparationFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverPreparationFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverPreparationFailure_ies_constr_2, + asn_MBR_s1ap_HandoverPreparationFailure_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverPreparationFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverPreparationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverPreparationFailure, s1ap_HandoverPreparationFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverPreparationFailure_ies_2, + memb_s1ap_HandoverPreparationFailure_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverPreparationFailure_ies_constr_2, + 0, + "s1ap-HandoverPreparationFailure-ies" + }, +}; +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 } /* s1ap-HandoverPreparationFailure-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverPreparationFailure = { + "S1ap-HandoverPreparationFailure", + "S1ap-HandoverPreparationFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverPreparationFailure_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverPreparationFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverPreparationFailure.h b/lib/asn/asn1c/S1ap-HandoverPreparationFailure.h new file mode 100644 index 0000000000..d344db2cd6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverPreparationFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverPreparationFailure_H_ +#define _S1ap_HandoverPreparationFailure_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverPreparationFailure */ +typedef struct S1ap_HandoverPreparationFailure { + struct S1ap_HandoverPreparationFailure__s1ap_HandoverPreparationFailure_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverPreparationFailure_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverPreparationFailure_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverRequest.c b/lib/asn/asn1c/S1ap-HandoverRequest.c new file mode 100644 index 0000000000..c08391022d --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverRequest.h" + +static int +memb_s1ap_HandoverRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverRequest_ies_specs_2 = { + sizeof(struct S1ap_HandoverRequest__s1ap_HandoverRequest_ies), + offsetof(struct S1ap_HandoverRequest__s1ap_HandoverRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverRequest_ies_2 = { + "s1ap-HandoverRequest-ies", + "s1ap-HandoverRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverRequest_ies_constr_2, + asn_MBR_s1ap_HandoverRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverRequest, s1ap_HandoverRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverRequest_ies_2, + memb_s1ap_HandoverRequest_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverRequest_ies_constr_2, + 0, + "s1ap-HandoverRequest-ies" + }, +}; +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 } /* s1ap-HandoverRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverRequest = { + "S1ap-HandoverRequest", + "S1ap-HandoverRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverRequest.h b/lib/asn/asn1c/S1ap-HandoverRequest.h new file mode 100644 index 0000000000..c1f051fcbb --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverRequest_H_ +#define _S1ap_HandoverRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverRequest */ +typedef struct S1ap_HandoverRequest { + struct S1ap_HandoverRequest__s1ap_HandoverRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverRequestAcknowledge.c b/lib/asn/asn1c/S1ap-HandoverRequestAcknowledge.c new file mode 100644 index 0000000000..21c747e03a --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverRequestAcknowledge.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverRequestAcknowledge.h" + +static int +memb_s1ap_HandoverRequestAcknowledge_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverRequestAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverRequestAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverRequestAcknowledge_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverRequestAcknowledge_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverRequestAcknowledge_ies_specs_2 = { + sizeof(struct S1ap_HandoverRequestAcknowledge__s1ap_HandoverRequestAcknowledge_ies), + offsetof(struct S1ap_HandoverRequestAcknowledge__s1ap_HandoverRequestAcknowledge_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverRequestAcknowledge_ies_2 = { + "s1ap-HandoverRequestAcknowledge-ies", + "s1ap-HandoverRequestAcknowledge-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverRequestAcknowledge_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverRequestAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverRequestAcknowledge_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverRequestAcknowledge_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverRequestAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverRequestAcknowledge_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverRequestAcknowledge_ies_constr_2, + asn_MBR_s1ap_HandoverRequestAcknowledge_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverRequestAcknowledge_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverRequestAcknowledge, s1ap_HandoverRequestAcknowledge_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverRequestAcknowledge_ies_2, + memb_s1ap_HandoverRequestAcknowledge_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverRequestAcknowledge_ies_constr_2, + 0, + "s1ap-HandoverRequestAcknowledge-ies" + }, +}; +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 } /* s1ap-HandoverRequestAcknowledge-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverRequestAcknowledge = { + "S1ap-HandoverRequestAcknowledge", + "S1ap-HandoverRequestAcknowledge", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverRequestAcknowledge.h b/lib/asn/asn1c/S1ap-HandoverRequestAcknowledge.h new file mode 100644 index 0000000000..04c8581c32 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverRequestAcknowledge.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverRequestAcknowledge_H_ +#define _S1ap_HandoverRequestAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverRequestAcknowledge */ +typedef struct S1ap_HandoverRequestAcknowledge { + struct S1ap_HandoverRequestAcknowledge__s1ap_HandoverRequestAcknowledge_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverRequestAcknowledge_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverRequestAcknowledge_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverRequired.c b/lib/asn/asn1c/S1ap-HandoverRequired.c new file mode 100644 index 0000000000..9302348866 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverRequired.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverRequired.h" + +static int +memb_s1ap_HandoverRequired_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_HandoverRequired_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_HandoverRequired_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_HandoverRequired_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_HandoverRequired_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_HandoverRequired_ies_specs_2 = { + sizeof(struct S1ap_HandoverRequired__s1ap_HandoverRequired_ies), + offsetof(struct S1ap_HandoverRequired__s1ap_HandoverRequired_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_HandoverRequired_ies_2 = { + "s1ap-HandoverRequired-ies", + "s1ap-HandoverRequired-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_HandoverRequired_ies_tags_2, + sizeof(asn_DEF_s1ap_HandoverRequired_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverRequired_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_HandoverRequired_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_HandoverRequired_ies_tags_2) + /sizeof(asn_DEF_s1ap_HandoverRequired_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_HandoverRequired_ies_constr_2, + asn_MBR_s1ap_HandoverRequired_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_HandoverRequired_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_HandoverRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_HandoverRequired, s1ap_HandoverRequired_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_HandoverRequired_ies_2, + memb_s1ap_HandoverRequired_ies_constraint_1, + &asn_PER_memb_s1ap_HandoverRequired_ies_constr_2, + 0, + "s1ap-HandoverRequired-ies" + }, +}; +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 } /* s1ap-HandoverRequired-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverRequired = { + "S1ap-HandoverRequired", + "S1ap-HandoverRequired", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverRequired_1, + 1, /* Elements count */ + &asn_SPC_S1ap_HandoverRequired_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverRequired.h b/lib/asn/asn1c/S1ap-HandoverRequired.h new file mode 100644 index 0000000000..10fc766dc5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverRequired.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_HandoverRequired_H_ +#define _S1ap_HandoverRequired_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-HandoverRequired */ +typedef struct S1ap_HandoverRequired { + struct S1ap_HandoverRequired__s1ap_HandoverRequired_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_HandoverRequired_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_HandoverRequired_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverRestrictionList.c b/lib/asn/asn1c/S1ap-HandoverRestrictionList.c new file mode 100644 index 0000000000..0ee66f995b --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverRestrictionList.c @@ -0,0 +1,114 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverRestrictionList.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "forbiddenInterRATs" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_HandoverRestrictionList, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P42, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 5, /* Start extensions */ + 7 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_HandoverRestrictionList = { + "S1ap-HandoverRestrictionList", + "S1ap-HandoverRestrictionList", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_HandoverRestrictionList_1, + 6, /* Elements count */ + &asn_SPC_S1ap_HandoverRestrictionList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverRestrictionList.h b/lib/asn/asn1c/S1ap-HandoverRestrictionList.h new file mode 100644 index 0000000000..c30b160170 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverRestrictionList.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "S1ap-EPLMNs.h" +#include "S1ap-ForbiddenTAs.h" +#include "S1ap-ForbiddenLAs.h" +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_HandoverRestrictionList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-HandoverType.c b/lib/asn/asn1c/S1ap-HandoverType.c new file mode 100644 index 0000000000..61af2c954e --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverType.c @@ -0,0 +1,174 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-HandoverType.h" + +int +S1ap_HandoverType_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_HandoverType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_HandoverType_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_HandoverType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_HandoverType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_HandoverType_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_HandoverType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_HandoverType_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_HandoverType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_HandoverType_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_HandoverType_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_HandoverType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_HandoverType_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_HandoverType_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 4l } /* (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 = { + "S1ap-HandoverType", + "S1ap-HandoverType", + S1ap_HandoverType_free, + S1ap_HandoverType_print, + S1ap_HandoverType_constraint, + S1ap_HandoverType_decode_ber, + S1ap_HandoverType_encode_der, + S1ap_HandoverType_decode_xer, + S1ap_HandoverType_encode_xer, + S1ap_HandoverType_decode_uper, + S1ap_HandoverType_encode_uper, + S1ap_HandoverType_decode_aper, + S1ap_HandoverType_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_HandoverType_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_HandoverType_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-HandoverType.h b/lib/asn/asn1c/S1ap-HandoverType.h new file mode 100644 index 0000000000..5b54c26ad0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-HandoverType.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-IE.c b/lib/asn/asn1c/S1ap-IE.c new file mode 100644 index 0000000000..282a454783 --- /dev/null +++ b/lib/asn/asn1c/S1ap-IE.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-IE.h" + +static asn_TYPE_member_t asn_MBR_S1ap_IE_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_IE, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ProtocolIE_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_IE, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Criticality, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_IE, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_IE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1ap_IE_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1ap_IE_specs_1 = { + sizeof(struct S1ap_IE), + offsetof(struct S1ap_IE, _asn_ctx), + asn_MAP_S1ap_IE_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_IE = { + "S1ap-IE", + "S1ap-IE", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_IE_tags_1, + sizeof(asn_DEF_S1ap_IE_tags_1) + /sizeof(asn_DEF_S1ap_IE_tags_1[0]), /* 1 */ + asn_DEF_S1ap_IE_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_IE_tags_1) + /sizeof(asn_DEF_S1ap_IE_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_S1ap_IE_1, + 3, /* Elements count */ + &asn_SPC_S1ap_IE_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-IE.h b/lib/asn/asn1c/S1ap-IE.h new file mode 100644 index 0000000000..d3bf5b24e8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-IE.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_IE_H_ +#define _S1ap_IE_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ProtocolIE-ID.h" +#include "S1ap-Criticality.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-IE */ +typedef struct S1ap_IE { + S1ap_ProtocolIE_ID_t id; + S1ap_Criticality_t criticality; + ANY_t value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1ap_IE_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_IE; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_IE_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-IMSI.c b/lib/asn/asn1c/S1ap-IMSI.c new file mode 100644 index 0000000000..403875761b --- /dev/null +++ b/lib/asn/asn1c/S1ap-IMSI.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-IMSI.h" + +int +S1ap_IMSI_constraint(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 >= 3LL && size <= 8LL)) { + /* 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 void +S1ap_IMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_IMSI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_IMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_IMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_IMSI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_IMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_IMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_IMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_IMSI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_IMSI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_IMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_IMSI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_IMSI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 3l, 8l } /* (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 = { + "S1ap-IMSI", + "S1ap-IMSI", + S1ap_IMSI_free, + S1ap_IMSI_print, + S1ap_IMSI_constraint, + S1ap_IMSI_decode_ber, + S1ap_IMSI_encode_der, + S1ap_IMSI_decode_xer, + S1ap_IMSI_encode_xer, + S1ap_IMSI_decode_uper, + S1ap_IMSI_encode_uper, + S1ap_IMSI_decode_aper, + S1ap_IMSI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_IMSI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-IMSI.h b/lib/asn/asn1c/S1ap-IMSI.h new file mode 100644 index 0000000000..89612b963b --- /dev/null +++ b/lib/asn/asn1c/S1ap-IMSI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-ImmediateMDT.c b/lib/asn/asn1c/S1ap-ImmediateMDT.c new file mode 100644 index 0000000000..311f59f7ea --- /dev/null +++ b/lib/asn/asn1c/S1ap-ImmediateMDT.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ImmediateMDT.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "measurementsToActivate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ImmediateMDT, reportingTriggerMDT), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ReportingTriggerMDT, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "reportingTriggerMDT" + }, + { ATF_POINTER, 3, offsetof(struct S1ap_ImmediateMDT, thresholdeventA2), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ThresholdEventA2, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "thresholdeventA2" + }, + { ATF_POINTER, 2, offsetof(struct S1ap_ImmediateMDT, periodicReportingMDT), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_PeriodicReportingMDT, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "periodicReportingMDT" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_ImmediateMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P43, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 }, /* reportingTriggerMDT */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* thresholdeventA2 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* periodicReportingMDT */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static 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 */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ImmediateMDT = { + "S1ap-ImmediateMDT", + "S1ap-ImmediateMDT", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ImmediateMDT_1, + 5, /* Elements count */ + &asn_SPC_S1ap_ImmediateMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ImmediateMDT.h b/lib/asn/asn1c/S1ap-ImmediateMDT.h new file mode 100644 index 0000000000..3fe875b286 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ImmediateMDT.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ImmediateMDT_H_ +#define _S1ap_ImmediateMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-MeasurementsToActivate.h" +#include "S1ap-ReportingTriggerMDT.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_ThresholdEventA2; +struct S1ap_PeriodicReportingMDT; +struct ProtocolExtensionContainer; + +/* S1ap-ImmediateMDT */ +typedef struct S1ap_ImmediateMDT { + S1ap_MeasurementsToActivate_t measurementsToActivate; + S1ap_ReportingTriggerMDT_t reportingTriggerMDT; + struct S1ap_ThresholdEventA2 *thresholdeventA2 /* OPTIONAL */; + struct S1ap_PeriodicReportingMDT *periodicReportingMDT /* OPTIONAL */; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-ThresholdEventA2.h" +#include "S1ap-PeriodicReportingMDT.h" +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_ImmediateMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-InitialContextSetupFailure.c b/lib/asn/asn1c/S1ap-InitialContextSetupFailure.c new file mode 100644 index 0000000000..9682c8b253 --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitialContextSetupFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-InitialContextSetupFailure.h" + +static int +memb_s1ap_InitialContextSetupFailure_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_InitialContextSetupFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_InitialContextSetupFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_InitialContextSetupFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_InitialContextSetupFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_InitialContextSetupFailure_ies_specs_2 = { + sizeof(struct S1ap_InitialContextSetupFailure__s1ap_InitialContextSetupFailure_ies), + offsetof(struct S1ap_InitialContextSetupFailure__s1ap_InitialContextSetupFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_InitialContextSetupFailure_ies_2 = { + "s1ap-InitialContextSetupFailure-ies", + "s1ap-InitialContextSetupFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_InitialContextSetupFailure_ies_tags_2, + sizeof(asn_DEF_s1ap_InitialContextSetupFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_InitialContextSetupFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_InitialContextSetupFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_InitialContextSetupFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_InitialContextSetupFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_InitialContextSetupFailure_ies_constr_2, + asn_MBR_s1ap_InitialContextSetupFailure_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_InitialContextSetupFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_InitialContextSetupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_InitialContextSetupFailure, s1ap_InitialContextSetupFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_InitialContextSetupFailure_ies_2, + memb_s1ap_InitialContextSetupFailure_ies_constraint_1, + &asn_PER_memb_s1ap_InitialContextSetupFailure_ies_constr_2, + 0, + "s1ap-InitialContextSetupFailure-ies" + }, +}; +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 } /* s1ap-InitialContextSetupFailure-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_InitialContextSetupFailure = { + "S1ap-InitialContextSetupFailure", + "S1ap-InitialContextSetupFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_InitialContextSetupFailure_1, + 1, /* Elements count */ + &asn_SPC_S1ap_InitialContextSetupFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-InitialContextSetupFailure.h b/lib/asn/asn1c/S1ap-InitialContextSetupFailure.h new file mode 100644 index 0000000000..0678e43523 --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitialContextSetupFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_InitialContextSetupFailure_H_ +#define _S1ap_InitialContextSetupFailure_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-InitialContextSetupFailure */ +typedef struct S1ap_InitialContextSetupFailure { + struct S1ap_InitialContextSetupFailure__s1ap_InitialContextSetupFailure_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_InitialContextSetupFailure_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_InitialContextSetupFailure_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-InitialContextSetupRequest.c b/lib/asn/asn1c/S1ap-InitialContextSetupRequest.c new file mode 100644 index 0000000000..b304d30b51 --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitialContextSetupRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-InitialContextSetupRequest.h" + +static int +memb_s1ap_InitialContextSetupRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_InitialContextSetupRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_InitialContextSetupRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_InitialContextSetupRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_InitialContextSetupRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_InitialContextSetupRequest_ies_specs_2 = { + sizeof(struct S1ap_InitialContextSetupRequest__s1ap_InitialContextSetupRequest_ies), + offsetof(struct S1ap_InitialContextSetupRequest__s1ap_InitialContextSetupRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_InitialContextSetupRequest_ies_2 = { + "s1ap-InitialContextSetupRequest-ies", + "s1ap-InitialContextSetupRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_InitialContextSetupRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_InitialContextSetupRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_InitialContextSetupRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_InitialContextSetupRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_InitialContextSetupRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_InitialContextSetupRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_InitialContextSetupRequest_ies_constr_2, + asn_MBR_s1ap_InitialContextSetupRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_InitialContextSetupRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_InitialContextSetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_InitialContextSetupRequest, s1ap_InitialContextSetupRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_InitialContextSetupRequest_ies_2, + memb_s1ap_InitialContextSetupRequest_ies_constraint_1, + &asn_PER_memb_s1ap_InitialContextSetupRequest_ies_constr_2, + 0, + "s1ap-InitialContextSetupRequest-ies" + }, +}; +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 } /* s1ap-InitialContextSetupRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_InitialContextSetupRequest = { + "S1ap-InitialContextSetupRequest", + "S1ap-InitialContextSetupRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_InitialContextSetupRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_InitialContextSetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-InitialContextSetupRequest.h b/lib/asn/asn1c/S1ap-InitialContextSetupRequest.h new file mode 100644 index 0000000000..91134df05a --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitialContextSetupRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_InitialContextSetupRequest_H_ +#define _S1ap_InitialContextSetupRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-InitialContextSetupRequest */ +typedef struct S1ap_InitialContextSetupRequest { + struct S1ap_InitialContextSetupRequest__s1ap_InitialContextSetupRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_InitialContextSetupRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_InitialContextSetupRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-InitialContextSetupResponse.c b/lib/asn/asn1c/S1ap-InitialContextSetupResponse.c new file mode 100644 index 0000000000..48fbd97422 --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitialContextSetupResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-InitialContextSetupResponse.h" + +static int +memb_s1ap_InitialContextSetupResponse_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_InitialContextSetupResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_InitialContextSetupResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_InitialContextSetupResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_InitialContextSetupResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_InitialContextSetupResponse_ies_specs_2 = { + sizeof(struct S1ap_InitialContextSetupResponse__s1ap_InitialContextSetupResponse_ies), + offsetof(struct S1ap_InitialContextSetupResponse__s1ap_InitialContextSetupResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_InitialContextSetupResponse_ies_2 = { + "s1ap-InitialContextSetupResponse-ies", + "s1ap-InitialContextSetupResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_InitialContextSetupResponse_ies_tags_2, + sizeof(asn_DEF_s1ap_InitialContextSetupResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_InitialContextSetupResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_InitialContextSetupResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_InitialContextSetupResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_InitialContextSetupResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_InitialContextSetupResponse_ies_constr_2, + asn_MBR_s1ap_InitialContextSetupResponse_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_InitialContextSetupResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_InitialContextSetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_InitialContextSetupResponse, s1ap_InitialContextSetupResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_InitialContextSetupResponse_ies_2, + memb_s1ap_InitialContextSetupResponse_ies_constraint_1, + &asn_PER_memb_s1ap_InitialContextSetupResponse_ies_constr_2, + 0, + "s1ap-InitialContextSetupResponse-ies" + }, +}; +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 } /* s1ap-InitialContextSetupResponse-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_InitialContextSetupResponse = { + "S1ap-InitialContextSetupResponse", + "S1ap-InitialContextSetupResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_InitialContextSetupResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_InitialContextSetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-InitialContextSetupResponse.h b/lib/asn/asn1c/S1ap-InitialContextSetupResponse.h new file mode 100644 index 0000000000..e5d94f4c95 --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitialContextSetupResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_InitialContextSetupResponse_H_ +#define _S1ap_InitialContextSetupResponse_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-InitialContextSetupResponse */ +typedef struct S1ap_InitialContextSetupResponse { + struct S1ap_InitialContextSetupResponse__s1ap_InitialContextSetupResponse_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_InitialContextSetupResponse_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_InitialContextSetupResponse_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-InitialUEMessage.c b/lib/asn/asn1c/S1ap-InitialUEMessage.c new file mode 100644 index 0000000000..3d0c8f9d9f --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitialUEMessage.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-InitialUEMessage.h" + +static int +memb_s1ap_InitialUEMessage_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_InitialUEMessage_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_InitialUEMessage_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_InitialUEMessage_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_InitialUEMessage_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_InitialUEMessage_ies_specs_2 = { + sizeof(struct S1ap_InitialUEMessage__s1ap_InitialUEMessage_ies), + offsetof(struct S1ap_InitialUEMessage__s1ap_InitialUEMessage_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_InitialUEMessage_ies_2 = { + "s1ap-InitialUEMessage-ies", + "s1ap-InitialUEMessage-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_InitialUEMessage_ies_tags_2, + sizeof(asn_DEF_s1ap_InitialUEMessage_ies_tags_2) + /sizeof(asn_DEF_s1ap_InitialUEMessage_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_InitialUEMessage_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_InitialUEMessage_ies_tags_2) + /sizeof(asn_DEF_s1ap_InitialUEMessage_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_InitialUEMessage_ies_constr_2, + asn_MBR_s1ap_InitialUEMessage_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_InitialUEMessage_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_InitialUEMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_InitialUEMessage, s1ap_InitialUEMessage_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_InitialUEMessage_ies_2, + memb_s1ap_InitialUEMessage_ies_constraint_1, + &asn_PER_memb_s1ap_InitialUEMessage_ies_constr_2, + 0, + "s1ap-InitialUEMessage-ies" + }, +}; +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 } /* s1ap-InitialUEMessage-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_InitialUEMessage = { + "S1ap-InitialUEMessage", + "S1ap-InitialUEMessage", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_InitialUEMessage_1, + 1, /* Elements count */ + &asn_SPC_S1ap_InitialUEMessage_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-InitialUEMessage.h b/lib/asn/asn1c/S1ap-InitialUEMessage.h new file mode 100644 index 0000000000..fc208175e3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitialUEMessage.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_InitialUEMessage_H_ +#define _S1ap_InitialUEMessage_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-InitialUEMessage */ +typedef struct S1ap_InitialUEMessage { + struct S1ap_InitialUEMessage__s1ap_InitialUEMessage_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_InitialUEMessage_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_InitialUEMessage_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-InitiatingMessage.c b/lib/asn/asn1c/S1ap-InitiatingMessage.c new file mode 100644 index 0000000000..234568f134 --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitiatingMessage.c @@ -0,0 +1,160 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-InitiatingMessage.h" + +static int +memb_procedureCode_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 255LL)) { + /* 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_criticality_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 GCC_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_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, + memb_procedureCode_constraint_1, + &asn_PER_memb_procedureCode_constr_2, + 0, + "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, + memb_criticality_constraint_1, + &asn_PER_memb_criticality_constr_3, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_InitiatingMessage, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_value_constraint_1, + &asn_PER_memb_value_constr_4, + 0, + "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 */ +}; +static 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, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_InitiatingMessage = { + "S1ap-InitiatingMessage", + "S1ap-InitiatingMessage", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_InitiatingMessage_1, + 3, /* Elements count */ + &asn_SPC_S1ap_InitiatingMessage_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-InitiatingMessage.h b/lib/asn/asn1c/S1ap-InitiatingMessage.h new file mode 100644 index 0000000000..98c4fea7df --- /dev/null +++ b/lib/asn/asn1c/S1ap-InitiatingMessage.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_InitiatingMessage_H_ +#define _S1ap_InitiatingMessage_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ProcedureCode.h" +#include "S1ap-Criticality.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-InitiatingMessage */ +typedef struct S1ap_InitiatingMessage { + S1ap_ProcedureCode_t procedureCode; + S1ap_Criticality_t criticality; + ANY_t 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_InitiatingMessage_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-IntegrityProtectionAlgorithms.c b/lib/asn/asn1c/S1ap-IntegrityProtectionAlgorithms.c new file mode 100644 index 0000000000..a79867aa6b --- /dev/null +++ b/lib/asn/asn1c/S1ap-IntegrityProtectionAlgorithms.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-IntegrityProtectionAlgorithms.h" + +int +S1ap_IntegrityProtectionAlgorithms_constraint(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 == 16LL)) { + /* 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 void +S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_IntegrityProtectionAlgorithms_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_IntegrityProtectionAlgorithms_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_IntegrityProtectionAlgorithms_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_IntegrityProtectionAlgorithms_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_IntegrityProtectionAlgorithms_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_IntegrityProtectionAlgorithms_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_IntegrityProtectionAlgorithms_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_IntegrityProtectionAlgorithms_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_IntegrityProtectionAlgorithms_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_IntegrityProtectionAlgorithms_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_IntegrityProtectionAlgorithms_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_IntegrityProtectionAlgorithms_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16l, 16l } /* (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 = { + "S1ap-IntegrityProtectionAlgorithms", + "S1ap-IntegrityProtectionAlgorithms", + S1ap_IntegrityProtectionAlgorithms_free, + S1ap_IntegrityProtectionAlgorithms_print, + S1ap_IntegrityProtectionAlgorithms_constraint, + S1ap_IntegrityProtectionAlgorithms_decode_ber, + S1ap_IntegrityProtectionAlgorithms_encode_der, + S1ap_IntegrityProtectionAlgorithms_decode_xer, + S1ap_IntegrityProtectionAlgorithms_encode_xer, + S1ap_IntegrityProtectionAlgorithms_decode_uper, + S1ap_IntegrityProtectionAlgorithms_encode_uper, + S1ap_IntegrityProtectionAlgorithms_decode_aper, + S1ap_IntegrityProtectionAlgorithms_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_IntegrityProtectionAlgorithms_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-IntegrityProtectionAlgorithms.h b/lib/asn/asn1c/S1ap-IntegrityProtectionAlgorithms.h new file mode 100644 index 0000000000..ee8faccd0f --- /dev/null +++ b/lib/asn/asn1c/S1ap-IntegrityProtectionAlgorithms.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-Inter-SystemInformationTransferType.c b/lib/asn/asn1c/S1ap-Inter-SystemInformationTransferType.c new file mode 100644 index 0000000000..d4a03d2a51 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Inter-SystemInformationTransferType.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Inter-SystemInformationTransferType.h" + +static asn_per_constraints_t asn_PER_type_S1ap_Inter_SystemInformationTransferType_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_Inter_SystemInformationTransferType = { + "S1ap-Inter-SystemInformationTransferType", + "S1ap-Inter-SystemInformationTransferType", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_Inter_SystemInformationTransferType_constr_1, + asn_MBR_S1ap_Inter_SystemInformationTransferType_1, + 1, /* Elements count */ + &asn_SPC_S1ap_Inter_SystemInformationTransferType_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Inter-SystemInformationTransferType.h b/lib/asn/asn1c/S1ap-Inter-SystemInformationTransferType.h new file mode 100644 index 0000000000..c0074850ee --- /dev/null +++ b/lib/asn/asn1c/S1ap-Inter-SystemInformationTransferType.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_Inter_SystemInformationTransferType_H_ +#define _S1ap_Inter_SystemInformationTransferType_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-RIMTransfer.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_Inter_SystemInformationTransferType_PR { + S1ap_Inter_SystemInformationTransferType_PR_NOTHING, /* No components present */ + S1ap_Inter_SystemInformationTransferType_PR_rIMTransfer, + /* Extensions may appear below */ + +} S1ap_Inter_SystemInformationTransferType_PR; + +/* S1ap-Inter-SystemInformationTransferType */ +typedef struct S1ap_Inter_SystemInformationTransferType { + S1ap_Inter_SystemInformationTransferType_PR present; + union S1ap_Inter_SystemInformationTransferType_u { + S1ap_RIMTransfer_t 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/asn/asn1c/S1ap-InterfacesToTrace.c b/lib/asn/asn1c/S1ap-InterfacesToTrace.c new file mode 100644 index 0000000000..f2192bd1bb --- /dev/null +++ b/lib/asn/asn1c/S1ap-InterfacesToTrace.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-InterfacesToTrace.h" + +int +S1ap_InterfacesToTrace_constraint(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 == 8LL)) { + /* 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 void +S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_InterfacesToTrace_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_InterfacesToTrace_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_InterfacesToTrace_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_InterfacesToTrace_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_InterfacesToTrace_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_InterfacesToTrace_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_InterfacesToTrace_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_InterfacesToTrace_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_InterfacesToTrace_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_InterfacesToTrace_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_InterfacesToTrace_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_InterfacesToTrace_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (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 = { + "S1ap-InterfacesToTrace", + "S1ap-InterfacesToTrace", + S1ap_InterfacesToTrace_free, + S1ap_InterfacesToTrace_print, + S1ap_InterfacesToTrace_constraint, + S1ap_InterfacesToTrace_decode_ber, + S1ap_InterfacesToTrace_encode_der, + S1ap_InterfacesToTrace_decode_xer, + S1ap_InterfacesToTrace_encode_xer, + S1ap_InterfacesToTrace_decode_uper, + S1ap_InterfacesToTrace_encode_uper, + S1ap_InterfacesToTrace_decode_aper, + S1ap_InterfacesToTrace_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_InterfacesToTrace_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-InterfacesToTrace.h b/lib/asn/asn1c/S1ap-InterfacesToTrace.h new file mode 100644 index 0000000000..712f120519 --- /dev/null +++ b/lib/asn/asn1c/S1ap-InterfacesToTrace.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-KillRequest.c b/lib/asn/asn1c/S1ap-KillRequest.c new file mode 100644 index 0000000000..6028a29698 --- /dev/null +++ b/lib/asn/asn1c/S1ap-KillRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-KillRequest.h" + +static int +memb_s1ap_KillRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_KillRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_KillRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_KillRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_KillRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_KillRequest_ies_specs_2 = { + sizeof(struct S1ap_KillRequest__s1ap_KillRequest_ies), + offsetof(struct S1ap_KillRequest__s1ap_KillRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_KillRequest_ies_2 = { + "s1ap-KillRequest-ies", + "s1ap-KillRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_KillRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_KillRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_KillRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_KillRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_KillRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_KillRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_KillRequest_ies_constr_2, + asn_MBR_s1ap_KillRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_KillRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_KillRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_KillRequest, s1ap_KillRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_KillRequest_ies_2, + memb_s1ap_KillRequest_ies_constraint_1, + &asn_PER_memb_s1ap_KillRequest_ies_constr_2, + 0, + "s1ap-KillRequest-ies" + }, +}; +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 } /* s1ap-KillRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_KillRequest = { + "S1ap-KillRequest", + "S1ap-KillRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_KillRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_KillRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-KillRequest.h b/lib/asn/asn1c/S1ap-KillRequest.h new file mode 100644 index 0000000000..ba16ba5871 --- /dev/null +++ b/lib/asn/asn1c/S1ap-KillRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_KillRequest_H_ +#define _S1ap_KillRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-KillRequest */ +typedef struct S1ap_KillRequest { + struct S1ap_KillRequest__s1ap_KillRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_KillRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_KillRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-KillResponse.c b/lib/asn/asn1c/S1ap-KillResponse.c new file mode 100644 index 0000000000..cbd5f06b78 --- /dev/null +++ b/lib/asn/asn1c/S1ap-KillResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-KillResponse.h" + +static int +memb_s1ap_KillResponse_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_KillResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_KillResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_KillResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_KillResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_KillResponse_ies_specs_2 = { + sizeof(struct S1ap_KillResponse__s1ap_KillResponse_ies), + offsetof(struct S1ap_KillResponse__s1ap_KillResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_KillResponse_ies_2 = { + "s1ap-KillResponse-ies", + "s1ap-KillResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_KillResponse_ies_tags_2, + sizeof(asn_DEF_s1ap_KillResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_KillResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_KillResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_KillResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_KillResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_KillResponse_ies_constr_2, + asn_MBR_s1ap_KillResponse_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_KillResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_KillResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_KillResponse, s1ap_KillResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_KillResponse_ies_2, + memb_s1ap_KillResponse_ies_constraint_1, + &asn_PER_memb_s1ap_KillResponse_ies_constr_2, + 0, + "s1ap-KillResponse-ies" + }, +}; +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 } /* s1ap-KillResponse-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_KillResponse = { + "S1ap-KillResponse", + "S1ap-KillResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_KillResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_KillResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-KillResponse.h b/lib/asn/asn1c/S1ap-KillResponse.h new file mode 100644 index 0000000000..fe8c7d02eb --- /dev/null +++ b/lib/asn/asn1c/S1ap-KillResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_KillResponse_H_ +#define _S1ap_KillResponse_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-KillResponse */ +typedef struct S1ap_KillResponse { + struct S1ap_KillResponse__s1ap_KillResponse_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_KillResponse_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_KillResponse_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-L3-Information.c b/lib/asn/asn1c/S1ap-L3-Information.c new file mode 100644 index 0000000000..1a898318bb --- /dev/null +++ b/lib/asn/asn1c/S1ap-L3-Information.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-L3-Information.h" + +int +S1ap_L3_Information_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_L3_Information_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_L3_Information_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_L3_Information_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_L3_Information_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_L3_Information_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_L3_Information_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_L3_Information_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_L3_Information_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_L3_Information_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_L3_Information_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_L3_Information_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_L3_Information_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-L3-Information", + "S1ap-L3-Information", + S1ap_L3_Information_free, + S1ap_L3_Information_print, + S1ap_L3_Information_constraint, + S1ap_L3_Information_decode_ber, + S1ap_L3_Information_encode_der, + S1ap_L3_Information_decode_xer, + S1ap_L3_Information_encode_xer, + S1ap_L3_Information_decode_uper, + S1ap_L3_Information_encode_uper, + S1ap_L3_Information_decode_aper, + S1ap_L3_Information_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-L3-Information.h b/lib/asn/asn1c/S1ap-L3-Information.h new file mode 100644 index 0000000000..9c68953d8c --- /dev/null +++ b/lib/asn/asn1c/S1ap-L3-Information.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-LAC.c b/lib/asn/asn1c/S1ap-LAC.c new file mode 100644 index 0000000000..9575f5ca9a --- /dev/null +++ b/lib/asn/asn1c/S1ap-LAC.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LAC.h" + +int +S1ap_LAC_constraint(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 == 2LL)) { + /* 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 void +S1ap_LAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_LAC_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_LAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_LAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_LAC_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_LAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_LAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_LAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_LAC_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_LAC_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_LAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LAC_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_LAC_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (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 = { + "S1ap-LAC", + "S1ap-LAC", + S1ap_LAC_free, + S1ap_LAC_print, + S1ap_LAC_constraint, + S1ap_LAC_decode_ber, + S1ap_LAC_encode_der, + S1ap_LAC_decode_xer, + S1ap_LAC_encode_xer, + S1ap_LAC_decode_uper, + S1ap_LAC_encode_uper, + S1ap_LAC_decode_aper, + S1ap_LAC_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_LAC_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-LAC.h b/lib/asn/asn1c/S1ap-LAC.h new file mode 100644 index 0000000000..49c907498e --- /dev/null +++ b/lib/asn/asn1c/S1ap-LAC.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-LAI.c b/lib/asn/asn1c/S1ap-LAI.c new file mode 100644 index 0000000000..4f2a466b7c --- /dev/null +++ b/lib/asn/asn1c/S1ap-LAI.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LAI.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "lAC" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_LAI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P44, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_LAI = { + "S1ap-LAI", + "S1ap-LAI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_LAI_1, + 3, /* Elements count */ + &asn_SPC_S1ap_LAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LAI.h b/lib/asn/asn1c/S1ap-LAI.h new file mode 100644 index 0000000000..7151bce3f2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LAI.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-LAI */ +typedef struct S1ap_LAI { + S1ap_PLMNidentity_t pLMNidentity; + S1ap_LAC_t lAC; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_LAI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LPPa-PDU.c b/lib/asn/asn1c/S1ap-LPPa-PDU.c new file mode 100644 index 0000000000..fa3edfce19 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LPPa-PDU.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LPPa-PDU.h" + +int +S1ap_LPPa_PDU_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_LPPa_PDU_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_LPPa_PDU_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_LPPa_PDU_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_LPPa_PDU_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_LPPa_PDU_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_LPPa_PDU_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_LPPa_PDU_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_LPPa_PDU_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_LPPa_PDU_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_LPPa_PDU_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LPPa_PDU_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-LPPa-PDU", + "S1ap-LPPa-PDU", + S1ap_LPPa_PDU_free, + S1ap_LPPa_PDU_print, + S1ap_LPPa_PDU_constraint, + S1ap_LPPa_PDU_decode_ber, + S1ap_LPPa_PDU_encode_der, + S1ap_LPPa_PDU_decode_xer, + S1ap_LPPa_PDU_encode_xer, + S1ap_LPPa_PDU_decode_uper, + S1ap_LPPa_PDU_encode_uper, + S1ap_LPPa_PDU_decode_aper, + S1ap_LPPa_PDU_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-LPPa-PDU.h b/lib/asn/asn1c/S1ap-LPPa-PDU.h new file mode 100644 index 0000000000..62082e1702 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LPPa-PDU.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-LastVisitedCell-Item.c b/lib/asn/asn1c/S1ap-LastVisitedCell-Item.c new file mode 100644 index 0000000000..1ddb28560d --- /dev/null +++ b/lib/asn/asn1c/S1ap-LastVisitedCell-Item.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LastVisitedCell-Item.h" + +static asn_per_constraints_t asn_PER_type_S1ap_LastVisitedCell_Item_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1ap_LastVisitedCell_Item_1[] = { + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uTRAN-Cell" + }, + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_LastVisitedCell_Item = { + "S1ap-LastVisitedCell-Item", + "S1ap-LastVisitedCell-Item", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_LastVisitedCell_Item_constr_1, + asn_MBR_S1ap_LastVisitedCell_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_LastVisitedCell_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LastVisitedCell-Item.h b/lib/asn/asn1c/S1ap-LastVisitedCell-Item.h new file mode 100644 index 0000000000..6734cd1f50 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LastVisitedCell-Item.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_LastVisitedCell_Item_H_ +#define _S1ap_LastVisitedCell_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-LastVisitedEUTRANCellInformation.h" +#include "S1ap-LastVisitedUTRANCellInformation.h" +#include "S1ap-LastVisitedGERANCellInformation.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_LastVisitedCell_Item_PR { + S1ap_LastVisitedCell_Item_PR_NOTHING, /* No components present */ + S1ap_LastVisitedCell_Item_PR_e_UTRAN_Cell, + S1ap_LastVisitedCell_Item_PR_uTRAN_Cell, + S1ap_LastVisitedCell_Item_PR_gERAN_Cell, + /* Extensions may appear below */ + +} S1ap_LastVisitedCell_Item_PR; + +/* S1ap-LastVisitedCell-Item */ +typedef struct S1ap_LastVisitedCell_Item { + S1ap_LastVisitedCell_Item_PR present; + union S1ap_LastVisitedCell_Item_u { + S1ap_LastVisitedEUTRANCellInformation_t e_UTRAN_Cell; + S1ap_LastVisitedUTRANCellInformation_t uTRAN_Cell; + S1ap_LastVisitedGERANCellInformation_t 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_LastVisitedCell_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LastVisitedEUTRANCellInformation.c b/lib/asn/asn1c/S1ap-LastVisitedEUTRANCellInformation.c new file mode 100644 index 0000000000..a5ed37b965 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LastVisitedEUTRANCellInformation.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LastVisitedEUTRANCellInformation.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P45, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_LastVisitedEUTRANCellInformation = { + "S1ap-LastVisitedEUTRANCellInformation", + "S1ap-LastVisitedEUTRANCellInformation", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_LastVisitedEUTRANCellInformation_1, + 4, /* Elements count */ + &asn_SPC_S1ap_LastVisitedEUTRANCellInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LastVisitedEUTRANCellInformation.h b/lib/asn/asn1c/S1ap-LastVisitedEUTRANCellInformation.h new file mode 100644 index 0000000000..106d2d8142 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LastVisitedEUTRANCellInformation.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_LastVisitedEUTRANCellInformation_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LastVisitedGERANCellInformation.c b/lib/asn/asn1c/S1ap-LastVisitedGERANCellInformation.c new file mode 100644 index 0000000000..c32230b012 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LastVisitedGERANCellInformation.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LastVisitedGERANCellInformation.h" + +static asn_per_constraints_t asn_PER_type_S1ap_LastVisitedGERANCellInformation_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "undefined" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1ap_LastVisitedGERANCellInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* undefined */ +}; +static 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, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_LastVisitedGERANCellInformation = { + "S1ap-LastVisitedGERANCellInformation", + "S1ap-LastVisitedGERANCellInformation", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_LastVisitedGERANCellInformation_constr_1, + asn_MBR_S1ap_LastVisitedGERANCellInformation_1, + 1, /* Elements count */ + &asn_SPC_S1ap_LastVisitedGERANCellInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LastVisitedGERANCellInformation.h b/lib/asn/asn1c/S1ap-LastVisitedGERANCellInformation.h new file mode 100644 index 0000000000..6c8b36a87e --- /dev/null +++ b/lib/asn/asn1c/S1ap-LastVisitedGERANCellInformation.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 { + S1ap_LastVisitedGERANCellInformation_PR_NOTHING, /* No components present */ + S1ap_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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_LastVisitedGERANCellInformation_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LastVisitedUTRANCellInformation.c b/lib/asn/asn1c/S1ap-LastVisitedUTRANCellInformation.c new file mode 100644 index 0000000000..2bebcf5ebe --- /dev/null +++ b/lib/asn/asn1c/S1ap-LastVisitedUTRANCellInformation.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LastVisitedUTRANCellInformation.h" + +int +S1ap_LastVisitedUTRANCellInformation_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_LastVisitedUTRANCellInformation_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_LastVisitedUTRANCellInformation_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_LastVisitedUTRANCellInformation_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_LastVisitedUTRANCellInformation_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_LastVisitedUTRANCellInformation_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_LastVisitedUTRANCellInformation_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_LastVisitedUTRANCellInformation_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_LastVisitedUTRANCellInformation_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_LastVisitedUTRANCellInformation_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_LastVisitedUTRANCellInformation_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LastVisitedUTRANCellInformation_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-LastVisitedUTRANCellInformation", + "S1ap-LastVisitedUTRANCellInformation", + S1ap_LastVisitedUTRANCellInformation_free, + S1ap_LastVisitedUTRANCellInformation_print, + S1ap_LastVisitedUTRANCellInformation_constraint, + S1ap_LastVisitedUTRANCellInformation_decode_ber, + S1ap_LastVisitedUTRANCellInformation_encode_der, + S1ap_LastVisitedUTRANCellInformation_decode_xer, + S1ap_LastVisitedUTRANCellInformation_encode_xer, + S1ap_LastVisitedUTRANCellInformation_decode_uper, + S1ap_LastVisitedUTRANCellInformation_encode_uper, + S1ap_LastVisitedUTRANCellInformation_decode_aper, + S1ap_LastVisitedUTRANCellInformation_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-LastVisitedUTRANCellInformation.h b/lib/asn/asn1c/S1ap-LastVisitedUTRANCellInformation.h new file mode 100644 index 0000000000..12b3636c04 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LastVisitedUTRANCellInformation.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-LocationReport.c b/lib/asn/asn1c/S1ap-LocationReport.c new file mode 100644 index 0000000000..05e8be8799 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LocationReport.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LocationReport.h" + +static int +memb_s1ap_LocationReport_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_LocationReport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_LocationReport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_LocationReport_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_LocationReport_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_LocationReport_ies_specs_2 = { + sizeof(struct S1ap_LocationReport__s1ap_LocationReport_ies), + offsetof(struct S1ap_LocationReport__s1ap_LocationReport_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_LocationReport_ies_2 = { + "s1ap-LocationReport-ies", + "s1ap-LocationReport-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_LocationReport_ies_tags_2, + sizeof(asn_DEF_s1ap_LocationReport_ies_tags_2) + /sizeof(asn_DEF_s1ap_LocationReport_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_LocationReport_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_LocationReport_ies_tags_2) + /sizeof(asn_DEF_s1ap_LocationReport_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_LocationReport_ies_constr_2, + asn_MBR_s1ap_LocationReport_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_LocationReport_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_LocationReport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_LocationReport, s1ap_LocationReport_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_LocationReport_ies_2, + memb_s1ap_LocationReport_ies_constraint_1, + &asn_PER_memb_s1ap_LocationReport_ies_constr_2, + 0, + "s1ap-LocationReport-ies" + }, +}; +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 } /* s1ap-LocationReport-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_LocationReport = { + "S1ap-LocationReport", + "S1ap-LocationReport", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_LocationReport_1, + 1, /* Elements count */ + &asn_SPC_S1ap_LocationReport_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LocationReport.h b/lib/asn/asn1c/S1ap-LocationReport.h new file mode 100644 index 0000000000..f0c66a5567 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LocationReport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_LocationReport_H_ +#define _S1ap_LocationReport_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-LocationReport */ +typedef struct S1ap_LocationReport { + struct S1ap_LocationReport__s1ap_LocationReport_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_LocationReport_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_LocationReport_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LocationReportingControl.c b/lib/asn/asn1c/S1ap-LocationReportingControl.c new file mode 100644 index 0000000000..cdea5ecec4 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LocationReportingControl.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LocationReportingControl.h" + +static int +memb_s1ap_LocationReportingControl_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_LocationReportingControl_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_LocationReportingControl_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_LocationReportingControl_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_LocationReportingControl_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_LocationReportingControl_ies_specs_2 = { + sizeof(struct S1ap_LocationReportingControl__s1ap_LocationReportingControl_ies), + offsetof(struct S1ap_LocationReportingControl__s1ap_LocationReportingControl_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_LocationReportingControl_ies_2 = { + "s1ap-LocationReportingControl-ies", + "s1ap-LocationReportingControl-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_LocationReportingControl_ies_tags_2, + sizeof(asn_DEF_s1ap_LocationReportingControl_ies_tags_2) + /sizeof(asn_DEF_s1ap_LocationReportingControl_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_LocationReportingControl_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_LocationReportingControl_ies_tags_2) + /sizeof(asn_DEF_s1ap_LocationReportingControl_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_LocationReportingControl_ies_constr_2, + asn_MBR_s1ap_LocationReportingControl_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_LocationReportingControl_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_LocationReportingControl_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_LocationReportingControl, s1ap_LocationReportingControl_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_LocationReportingControl_ies_2, + memb_s1ap_LocationReportingControl_ies_constraint_1, + &asn_PER_memb_s1ap_LocationReportingControl_ies_constr_2, + 0, + "s1ap-LocationReportingControl-ies" + }, +}; +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 } /* s1ap-LocationReportingControl-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_LocationReportingControl = { + "S1ap-LocationReportingControl", + "S1ap-LocationReportingControl", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_LocationReportingControl_1, + 1, /* Elements count */ + &asn_SPC_S1ap_LocationReportingControl_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LocationReportingControl.h b/lib/asn/asn1c/S1ap-LocationReportingControl.h new file mode 100644 index 0000000000..bea5b70cbd --- /dev/null +++ b/lib/asn/asn1c/S1ap-LocationReportingControl.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_LocationReportingControl_H_ +#define _S1ap_LocationReportingControl_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-LocationReportingControl */ +typedef struct S1ap_LocationReportingControl { + struct S1ap_LocationReportingControl__s1ap_LocationReportingControl_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_LocationReportingControl_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_LocationReportingControl_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LocationReportingFailureIndication.c b/lib/asn/asn1c/S1ap-LocationReportingFailureIndication.c new file mode 100644 index 0000000000..be31e1413b --- /dev/null +++ b/lib/asn/asn1c/S1ap-LocationReportingFailureIndication.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LocationReportingFailureIndication.h" + +static int +memb_s1ap_LocationReportingFailureIndication_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_LocationReportingFailureIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_LocationReportingFailureIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_LocationReportingFailureIndication_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_LocationReportingFailureIndication_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_LocationReportingFailureIndication_ies_specs_2 = { + sizeof(struct S1ap_LocationReportingFailureIndication__s1ap_LocationReportingFailureIndication_ies), + offsetof(struct S1ap_LocationReportingFailureIndication__s1ap_LocationReportingFailureIndication_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_LocationReportingFailureIndication_ies_2 = { + "s1ap-LocationReportingFailureIndication-ies", + "s1ap-LocationReportingFailureIndication-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_LocationReportingFailureIndication_ies_tags_2, + sizeof(asn_DEF_s1ap_LocationReportingFailureIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_LocationReportingFailureIndication_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_LocationReportingFailureIndication_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_LocationReportingFailureIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_LocationReportingFailureIndication_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_LocationReportingFailureIndication_ies_constr_2, + asn_MBR_s1ap_LocationReportingFailureIndication_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_LocationReportingFailureIndication_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_LocationReportingFailureIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_LocationReportingFailureIndication, s1ap_LocationReportingFailureIndication_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_LocationReportingFailureIndication_ies_2, + memb_s1ap_LocationReportingFailureIndication_ies_constraint_1, + &asn_PER_memb_s1ap_LocationReportingFailureIndication_ies_constr_2, + 0, + "s1ap-LocationReportingFailureIndication-ies" + }, +}; +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 } /* s1ap-LocationReportingFailureIndication-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_LocationReportingFailureIndication = { + "S1ap-LocationReportingFailureIndication", + "S1ap-LocationReportingFailureIndication", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_LocationReportingFailureIndication_1, + 1, /* Elements count */ + &asn_SPC_S1ap_LocationReportingFailureIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LocationReportingFailureIndication.h b/lib/asn/asn1c/S1ap-LocationReportingFailureIndication.h new file mode 100644 index 0000000000..1c4604dc3a --- /dev/null +++ b/lib/asn/asn1c/S1ap-LocationReportingFailureIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_LocationReportingFailureIndication_H_ +#define _S1ap_LocationReportingFailureIndication_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-LocationReportingFailureIndication */ +typedef struct S1ap_LocationReportingFailureIndication { + struct S1ap_LocationReportingFailureIndication__s1ap_LocationReportingFailureIndication_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_LocationReportingFailureIndication_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_LocationReportingFailureIndication_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LoggedMDT.c b/lib/asn/asn1c/S1ap-LoggedMDT.c new file mode 100644 index 0000000000..ab04fa6974 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LoggedMDT.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LoggedMDT.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "loggingDuration" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_LoggedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P46, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_LoggedMDT = { + "S1ap-LoggedMDT", + "S1ap-LoggedMDT", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_LoggedMDT_1, + 3, /* Elements count */ + &asn_SPC_S1ap_LoggedMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LoggedMDT.h b/lib/asn/asn1c/S1ap-LoggedMDT.h new file mode 100644 index 0000000000..083481adf2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LoggedMDT.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-LoggedMDT */ +typedef struct S1ap_LoggedMDT { + S1ap_LoggingInterval_t loggingInterval; + S1ap_LoggingDuration_t loggingDuration; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_LoggedMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LoggingDuration.c b/lib/asn/asn1c/S1ap-LoggingDuration.c new file mode 100644 index 0000000000..7e9e4a5db9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LoggingDuration.c @@ -0,0 +1,174 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LoggingDuration.h" + +int +S1ap_LoggingDuration_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_LoggingDuration_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_LoggingDuration_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_LoggingDuration_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_LoggingDuration_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_LoggingDuration_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_LoggingDuration_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_LoggingDuration_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_LoggingDuration_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_LoggingDuration_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_LoggingDuration_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_LoggingDuration_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LoggingDuration_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_LoggingDuration_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0l, 5l } /* (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) */ +}; +static 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 = { + "S1ap-LoggingDuration", + "S1ap-LoggingDuration", + S1ap_LoggingDuration_free, + S1ap_LoggingDuration_print, + S1ap_LoggingDuration_constraint, + S1ap_LoggingDuration_decode_ber, + S1ap_LoggingDuration_encode_der, + S1ap_LoggingDuration_decode_xer, + S1ap_LoggingDuration_encode_xer, + S1ap_LoggingDuration_decode_uper, + S1ap_LoggingDuration_encode_uper, + S1ap_LoggingDuration_decode_aper, + S1ap_LoggingDuration_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_LoggingDuration_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_LoggingDuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LoggingDuration.h b/lib/asn/asn1c/S1ap-LoggingDuration.h new file mode 100644 index 0000000000..d20d379afb --- /dev/null +++ b/lib/asn/asn1c/S1ap-LoggingDuration.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_LoggingDuration; +asn_struct_free_f S1ap_LoggingDuration_free; +asn_struct_print_f S1ap_LoggingDuration_print; +asn_constr_check_f S1ap_LoggingDuration_constraint; +ber_type_decoder_f S1ap_LoggingDuration_decode_ber; +der_type_encoder_f S1ap_LoggingDuration_encode_der; +xer_type_decoder_f S1ap_LoggingDuration_decode_xer; +xer_type_encoder_f S1ap_LoggingDuration_encode_xer; +per_type_decoder_f S1ap_LoggingDuration_decode_uper; +per_type_encoder_f S1ap_LoggingDuration_encode_uper; +per_type_decoder_f S1ap_LoggingDuration_decode_aper; +per_type_encoder_f S1ap_LoggingDuration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_LoggingDuration_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-LoggingInterval.c b/lib/asn/asn1c/S1ap-LoggingInterval.c new file mode 100644 index 0000000000..b75db1f647 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LoggingInterval.c @@ -0,0 +1,178 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-LoggingInterval.h" + +int +S1ap_LoggingInterval_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_LoggingInterval_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_LoggingInterval_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_LoggingInterval_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_LoggingInterval_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_LoggingInterval_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_LoggingInterval_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_LoggingInterval_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_LoggingInterval_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_LoggingInterval_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_LoggingInterval_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_LoggingInterval_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_LoggingInterval_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_LoggingInterval_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0l, 7l } /* (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) */ +}; +static 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 = { + "S1ap-LoggingInterval", + "S1ap-LoggingInterval", + S1ap_LoggingInterval_free, + S1ap_LoggingInterval_print, + S1ap_LoggingInterval_constraint, + S1ap_LoggingInterval_decode_ber, + S1ap_LoggingInterval_encode_der, + S1ap_LoggingInterval_decode_xer, + S1ap_LoggingInterval_encode_xer, + S1ap_LoggingInterval_decode_uper, + S1ap_LoggingInterval_encode_uper, + S1ap_LoggingInterval_decode_aper, + S1ap_LoggingInterval_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_LoggingInterval_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_LoggingInterval_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-LoggingInterval.h b/lib/asn/asn1c/S1ap-LoggingInterval.h new file mode 100644 index 0000000000..7d7f6b1b03 --- /dev/null +++ b/lib/asn/asn1c/S1ap-LoggingInterval.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_LoggingInterval; +asn_struct_free_f S1ap_LoggingInterval_free; +asn_struct_print_f S1ap_LoggingInterval_print; +asn_constr_check_f S1ap_LoggingInterval_constraint; +ber_type_decoder_f S1ap_LoggingInterval_decode_ber; +der_type_encoder_f S1ap_LoggingInterval_encode_der; +xer_type_decoder_f S1ap_LoggingInterval_decode_xer; +xer_type_encoder_f S1ap_LoggingInterval_encode_xer; +per_type_decoder_f S1ap_LoggingInterval_decode_uper; +per_type_encoder_f S1ap_LoggingInterval_encode_uper; +per_type_decoder_f S1ap_LoggingInterval_decode_aper; +per_type_encoder_f S1ap_LoggingInterval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_LoggingInterval_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-M-TMSI.c b/lib/asn/asn1c/S1ap-M-TMSI.c new file mode 100644 index 0000000000..28f60336ee --- /dev/null +++ b/lib/asn/asn1c/S1ap-M-TMSI.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-M-TMSI.h" + +int +S1ap_M_TMSI_constraint(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 == 4LL)) { + /* 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 void +S1ap_M_TMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_M_TMSI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_M_TMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_M_TMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_M_TMSI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_M_TMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_M_TMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_M_TMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_M_TMSI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_M_TMSI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_M_TMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_M_TMSI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_M_TMSI_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (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 = { + "S1ap-M-TMSI", + "S1ap-M-TMSI", + S1ap_M_TMSI_free, + S1ap_M_TMSI_print, + S1ap_M_TMSI_constraint, + S1ap_M_TMSI_decode_ber, + S1ap_M_TMSI_encode_der, + S1ap_M_TMSI_decode_xer, + S1ap_M_TMSI_encode_xer, + S1ap_M_TMSI_decode_uper, + S1ap_M_TMSI_encode_uper, + S1ap_M_TMSI_decode_aper, + S1ap_M_TMSI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_M_TMSI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-M-TMSI.h b/lib/asn/asn1c/S1ap-M-TMSI.h new file mode 100644 index 0000000000..e06d863ce5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-M-TMSI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-MDT-Activation.c b/lib/asn/asn1c/S1ap-MDT-Activation.c new file mode 100644 index 0000000000..138d2553ad --- /dev/null +++ b/lib/asn/asn1c/S1ap-MDT-Activation.c @@ -0,0 +1,170 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MDT-Activation.h" + +int +S1ap_MDT_Activation_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_MDT_Activation_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_MDT_Activation_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MDT_Activation_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MDT_Activation_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MDT_Activation_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MDT_Activation_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MDT_Activation_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MDT_Activation_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MDT_Activation_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MDT_Activation_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MDT_Activation_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MDT_Activation_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_MDT_Activation_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (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" } + /* 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) */ + 2 /* logged-MDT-only(2) */ + /* This list is extensible */ +}; +static 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 */ + 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_MDT_Activation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MDT_Activation = { + "S1ap-MDT-Activation", + "S1ap-MDT-Activation", + S1ap_MDT_Activation_free, + S1ap_MDT_Activation_print, + S1ap_MDT_Activation_constraint, + S1ap_MDT_Activation_decode_ber, + S1ap_MDT_Activation_encode_der, + S1ap_MDT_Activation_decode_xer, + S1ap_MDT_Activation_encode_xer, + S1ap_MDT_Activation_decode_uper, + S1ap_MDT_Activation_encode_uper, + S1ap_MDT_Activation_decode_aper, + S1ap_MDT_Activation_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_MDT_Activation_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_MDT_Activation_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MDT-Activation.h b/lib/asn/asn1c/S1ap-MDT-Activation.h new file mode 100644 index 0000000000..1f444c79a4 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MDT-Activation.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 + */ +} e_S1ap_MDT_Activation; + +/* S1ap-MDT-Activation */ +typedef long S1ap_MDT_Activation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_MDT_Activation; +asn_struct_free_f S1ap_MDT_Activation_free; +asn_struct_print_f S1ap_MDT_Activation_print; +asn_constr_check_f S1ap_MDT_Activation_constraint; +ber_type_decoder_f S1ap_MDT_Activation_decode_ber; +der_type_encoder_f S1ap_MDT_Activation_encode_der; +xer_type_decoder_f S1ap_MDT_Activation_decode_xer; +xer_type_encoder_f S1ap_MDT_Activation_encode_xer; +per_type_decoder_f S1ap_MDT_Activation_decode_uper; +per_type_encoder_f S1ap_MDT_Activation_encode_uper; +per_type_decoder_f S1ap_MDT_Activation_decode_aper; +per_type_encoder_f S1ap_MDT_Activation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_MDT_Activation_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MDT-Configuration.c b/lib/asn/asn1c/S1ap-MDT-Configuration.c new file mode 100644 index 0000000000..4d7f292885 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MDT-Configuration.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MDT-Configuration.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P47, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MDT_Configuration = { + "S1ap-MDT-Configuration", + "S1ap-MDT-Configuration", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_MDT_Configuration_1, + 4, /* Elements count */ + &asn_SPC_S1ap_MDT_Configuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MDT-Configuration.h b/lib/asn/asn1c/S1ap-MDT-Configuration.h new file mode 100644 index 0000000000..b14a8799c6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MDT-Configuration.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-MDT-Configuration */ +typedef struct S1ap_MDT_Configuration { + S1ap_MDT_Activation_t mdt_Activation; + S1ap_AreaScopeOfMDT_t areaScopeOfMDT; + S1ap_MDTMode_t mDTMode; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_MDT_Configuration_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MDTMode.c b/lib/asn/asn1c/S1ap-MDTMode.c new file mode 100644 index 0000000000..db79b1ea1b --- /dev/null +++ b/lib/asn/asn1c/S1ap-MDTMode.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MDTMode.h" + +static asn_per_constraints_t asn_PER_type_S1ap_MDTMode_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1ap_MDTMode_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_MDTMode, choice.immediateMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ImmediateMDT, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "immediateMDT" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_MDTMode, choice.loggedMDT), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_LoggedMDT, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "loggedMDT" + }, +}; +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 */ +}; +static 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, + 2, /* Count of tags in the map */ + 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MDTMode = { + "S1ap-MDTMode", + "S1ap-MDTMode", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_MDTMode_constr_1, + asn_MBR_S1ap_MDTMode_1, + 2, /* Elements count */ + &asn_SPC_S1ap_MDTMode_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MDTMode.h b/lib/asn/asn1c/S1ap-MDTMode.h new file mode 100644 index 0000000000..4564f66872 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MDTMode.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_MDTMode_H_ +#define _S1ap_MDTMode_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ImmediateMDT.h" +#include "S1ap-LoggedMDT.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_MDTMode_PR { + S1ap_MDTMode_PR_NOTHING, /* No components present */ + S1ap_MDTMode_PR_immediateMDT, + S1ap_MDTMode_PR_loggedMDT, + /* Extensions may appear below */ + +} S1ap_MDTMode_PR; + +/* S1ap-MDTMode */ +typedef struct S1ap_MDTMode { + S1ap_MDTMode_PR present; + union S1ap_MDTMode_u { + S1ap_ImmediateMDT_t immediateMDT; + S1ap_LoggedMDT_t loggedMDT; + /* + * This type is extensible, + * possible extensions are below. + */ + } 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_MDTMode_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MME-Code.c b/lib/asn/asn1c/S1ap-MME-Code.c new file mode 100644 index 0000000000..8fcb550162 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MME-Code.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MME-Code.h" + +int +S1ap_MME_Code_constraint(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 == 1LL)) { + /* 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 void +S1ap_MME_Code_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_MME_Code_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MME_Code_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_Code_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MME_Code_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_Code_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MME_Code_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_Code_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MME_Code_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MME_Code_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MME_Code_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MME_Code_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_MME_Code_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (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 = { + "S1ap-MME-Code", + "S1ap-MME-Code", + S1ap_MME_Code_free, + S1ap_MME_Code_print, + S1ap_MME_Code_constraint, + S1ap_MME_Code_decode_ber, + S1ap_MME_Code_encode_der, + S1ap_MME_Code_decode_xer, + S1ap_MME_Code_encode_xer, + S1ap_MME_Code_decode_uper, + S1ap_MME_Code_encode_uper, + S1ap_MME_Code_decode_aper, + S1ap_MME_Code_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_MME_Code_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-MME-Code.h b/lib/asn/asn1c/S1ap-MME-Code.h new file mode 100644 index 0000000000..a3047a67d6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MME-Code.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-MME-Group-ID.c b/lib/asn/asn1c/S1ap-MME-Group-ID.c new file mode 100644 index 0000000000..ed78398d63 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MME-Group-ID.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MME-Group-ID.h" + +int +S1ap_MME_Group_ID_constraint(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 == 2LL)) { + /* 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 void +S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_MME_Group_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MME_Group_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_Group_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MME_Group_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_Group_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MME_Group_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_Group_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MME_Group_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MME_Group_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MME_Group_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MME_Group_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_MME_Group_ID_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (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 = { + "S1ap-MME-Group-ID", + "S1ap-MME-Group-ID", + S1ap_MME_Group_ID_free, + S1ap_MME_Group_ID_print, + S1ap_MME_Group_ID_constraint, + S1ap_MME_Group_ID_decode_ber, + S1ap_MME_Group_ID_encode_der, + S1ap_MME_Group_ID_decode_xer, + S1ap_MME_Group_ID_encode_xer, + S1ap_MME_Group_ID_decode_uper, + S1ap_MME_Group_ID_encode_uper, + S1ap_MME_Group_ID_decode_aper, + S1ap_MME_Group_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_MME_Group_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-MME-Group-ID.h b/lib/asn/asn1c/S1ap-MME-Group-ID.h new file mode 100644 index 0000000000..b30114539b --- /dev/null +++ b/lib/asn/asn1c/S1ap-MME-Group-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-MME-UE-S1AP-ID.c b/lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.c new file mode 100644 index 0000000000..acad62dac6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MME-UE-S1AP-ID.h" + +int +S1ap_MME_UE_S1AP_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *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 void +S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */ +} + +void +S1ap_MME_UE_S1AP_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MME_UE_S1AP_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_UE_S1AP_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MME_UE_S1AP_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_UE_S1AP_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MME_UE_S1AP_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MME_UE_S1AP_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MME_UE_S1AP_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MME_UE_S1AP_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MME_UE_S1AP_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MME_UE_S1AP_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_MME_UE_S1AP_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0l, 4294967295ul } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static 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 = { + "S1ap-MME-UE-S1AP-ID", + "S1ap-MME-UE-S1AP-ID", + S1ap_MME_UE_S1AP_ID_free, + S1ap_MME_UE_S1AP_ID_print, + S1ap_MME_UE_S1AP_ID_constraint, + S1ap_MME_UE_S1AP_ID_decode_ber, + S1ap_MME_UE_S1AP_ID_encode_der, + S1ap_MME_UE_S1AP_ID_decode_xer, + S1ap_MME_UE_S1AP_ID_encode_xer, + S1ap_MME_UE_S1AP_ID_decode_uper, + S1ap_MME_UE_S1AP_ID_encode_uper, + S1ap_MME_UE_S1AP_ID_decode_aper, + S1ap_MME_UE_S1AP_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_MME_UE_S1AP_ID_constr_1, + 0, 0, /* No members */ + &asn_SPC_S1ap_MME_UE_S1AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.h b/lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.h new file mode 100644 index 0000000000..a2340462fb --- /dev/null +++ b/lib/asn/asn1c/S1ap-MME-UE-S1AP-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_MME_UE_S1AP_ID; +asn_struct_free_f S1ap_MME_UE_S1AP_ID_free; +asn_struct_print_f S1ap_MME_UE_S1AP_ID_print; +asn_constr_check_f S1ap_MME_UE_S1AP_ID_constraint; +ber_type_decoder_f S1ap_MME_UE_S1AP_ID_decode_ber; +der_type_encoder_f S1ap_MME_UE_S1AP_ID_encode_der; +xer_type_decoder_f S1ap_MME_UE_S1AP_ID_decode_xer; +xer_type_encoder_f S1ap_MME_UE_S1AP_ID_encode_xer; +per_type_decoder_f S1ap_MME_UE_S1AP_ID_decode_uper; +per_type_encoder_f S1ap_MME_UE_S1AP_ID_encode_uper; +per_type_decoder_f S1ap_MME_UE_S1AP_ID_decode_aper; +per_type_encoder_f S1ap_MME_UE_S1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_MME_UE_S1AP_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MMEConfigurationTransfer.c b/lib/asn/asn1c/S1ap-MMEConfigurationTransfer.c new file mode 100644 index 0000000000..fbe49e7dbd --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEConfigurationTransfer.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MMEConfigurationTransfer.h" + +static int +memb_s1ap_MMEConfigurationTransfer_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_MMEConfigurationTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_MMEConfigurationTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_MMEConfigurationTransfer_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_MMEConfigurationTransfer_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_MMEConfigurationTransfer_ies_specs_2 = { + sizeof(struct S1ap_MMEConfigurationTransfer__s1ap_MMEConfigurationTransfer_ies), + offsetof(struct S1ap_MMEConfigurationTransfer__s1ap_MMEConfigurationTransfer_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_MMEConfigurationTransfer_ies_2 = { + "s1ap-MMEConfigurationTransfer-ies", + "s1ap-MMEConfigurationTransfer-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_MMEConfigurationTransfer_ies_tags_2, + sizeof(asn_DEF_s1ap_MMEConfigurationTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEConfigurationTransfer_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_MMEConfigurationTransfer_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_MMEConfigurationTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEConfigurationTransfer_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_MMEConfigurationTransfer_ies_constr_2, + asn_MBR_s1ap_MMEConfigurationTransfer_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_MMEConfigurationTransfer_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_MMEConfigurationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_MMEConfigurationTransfer, s1ap_MMEConfigurationTransfer_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_MMEConfigurationTransfer_ies_2, + memb_s1ap_MMEConfigurationTransfer_ies_constraint_1, + &asn_PER_memb_s1ap_MMEConfigurationTransfer_ies_constr_2, + 0, + "s1ap-MMEConfigurationTransfer-ies" + }, +}; +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 } /* s1ap-MMEConfigurationTransfer-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MMEConfigurationTransfer = { + "S1ap-MMEConfigurationTransfer", + "S1ap-MMEConfigurationTransfer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_MMEConfigurationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1ap_MMEConfigurationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MMEConfigurationTransfer.h b/lib/asn/asn1c/S1ap-MMEConfigurationTransfer.h new file mode 100644 index 0000000000..35d8146de4 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEConfigurationTransfer.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_MMEConfigurationTransfer_H_ +#define _S1ap_MMEConfigurationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-MMEConfigurationTransfer */ +typedef struct S1ap_MMEConfigurationTransfer { + struct S1ap_MMEConfigurationTransfer__s1ap_MMEConfigurationTransfer_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_MMEConfigurationTransfer_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_MMEConfigurationTransfer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MMEConfigurationUpdate.c b/lib/asn/asn1c/S1ap-MMEConfigurationUpdate.c new file mode 100644 index 0000000000..468edb34ad --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEConfigurationUpdate.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MMEConfigurationUpdate.h" + +static int +memb_s1ap_MMEConfigurationUpdate_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_MMEConfigurationUpdate_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_MMEConfigurationUpdate_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_MMEConfigurationUpdate_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_MMEConfigurationUpdate_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_MMEConfigurationUpdate_ies_specs_2 = { + sizeof(struct S1ap_MMEConfigurationUpdate__s1ap_MMEConfigurationUpdate_ies), + offsetof(struct S1ap_MMEConfigurationUpdate__s1ap_MMEConfigurationUpdate_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_MMEConfigurationUpdate_ies_2 = { + "s1ap-MMEConfigurationUpdate-ies", + "s1ap-MMEConfigurationUpdate-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_MMEConfigurationUpdate_ies_tags_2, + sizeof(asn_DEF_s1ap_MMEConfigurationUpdate_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEConfigurationUpdate_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_MMEConfigurationUpdate_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_MMEConfigurationUpdate_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEConfigurationUpdate_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_MMEConfigurationUpdate_ies_constr_2, + asn_MBR_s1ap_MMEConfigurationUpdate_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_MMEConfigurationUpdate_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_MMEConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_MMEConfigurationUpdate, s1ap_MMEConfigurationUpdate_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_MMEConfigurationUpdate_ies_2, + memb_s1ap_MMEConfigurationUpdate_ies_constraint_1, + &asn_PER_memb_s1ap_MMEConfigurationUpdate_ies_constr_2, + 0, + "s1ap-MMEConfigurationUpdate-ies" + }, +}; +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 } /* s1ap-MMEConfigurationUpdate-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MMEConfigurationUpdate = { + "S1ap-MMEConfigurationUpdate", + "S1ap-MMEConfigurationUpdate", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_MMEConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_S1ap_MMEConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MMEConfigurationUpdate.h b/lib/asn/asn1c/S1ap-MMEConfigurationUpdate.h new file mode 100644 index 0000000000..ddc7cb757e --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEConfigurationUpdate.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_MMEConfigurationUpdate_H_ +#define _S1ap_MMEConfigurationUpdate_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-MMEConfigurationUpdate */ +typedef struct S1ap_MMEConfigurationUpdate { + struct S1ap_MMEConfigurationUpdate__s1ap_MMEConfigurationUpdate_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_MMEConfigurationUpdate_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_MMEConfigurationUpdate_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MMEConfigurationUpdateAcknowledge.c b/lib/asn/asn1c/S1ap-MMEConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000000..ffb54ca524 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEConfigurationUpdateAcknowledge.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MMEConfigurationUpdateAcknowledge.h" + +static int +memb_s1ap_MMEConfigurationUpdateAcknowledge_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_MMEConfigurationUpdateAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_MMEConfigurationUpdateAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_MMEConfigurationUpdateAcknowledge_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_MMEConfigurationUpdateAcknowledge_ies_specs_2 = { + sizeof(struct S1ap_MMEConfigurationUpdateAcknowledge__s1ap_MMEConfigurationUpdateAcknowledge_ies), + offsetof(struct S1ap_MMEConfigurationUpdateAcknowledge__s1ap_MMEConfigurationUpdateAcknowledge_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_2 = { + "s1ap-MMEConfigurationUpdateAcknowledge-ies", + "s1ap-MMEConfigurationUpdateAcknowledge-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_tags_2, + sizeof(asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_MMEConfigurationUpdateAcknowledge_ies_constr_2, + asn_MBR_s1ap_MMEConfigurationUpdateAcknowledge_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_MMEConfigurationUpdateAcknowledge_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_MMEConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_MMEConfigurationUpdateAcknowledge, s1ap_MMEConfigurationUpdateAcknowledge_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_MMEConfigurationUpdateAcknowledge_ies_2, + memb_s1ap_MMEConfigurationUpdateAcknowledge_ies_constraint_1, + &asn_PER_memb_s1ap_MMEConfigurationUpdateAcknowledge_ies_constr_2, + 0, + "s1ap-MMEConfigurationUpdateAcknowledge-ies" + }, +}; +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 } /* s1ap-MMEConfigurationUpdateAcknowledge-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MMEConfigurationUpdateAcknowledge = { + "S1ap-MMEConfigurationUpdateAcknowledge", + "S1ap-MMEConfigurationUpdateAcknowledge", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_MMEConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1ap_MMEConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MMEConfigurationUpdateAcknowledge.h b/lib/asn/asn1c/S1ap-MMEConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000000..71cf0f5177 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEConfigurationUpdateAcknowledge.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_MMEConfigurationUpdateAcknowledge_H_ +#define _S1ap_MMEConfigurationUpdateAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-MMEConfigurationUpdateAcknowledge */ +typedef struct S1ap_MMEConfigurationUpdateAcknowledge { + struct S1ap_MMEConfigurationUpdateAcknowledge__s1ap_MMEConfigurationUpdateAcknowledge_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_MMEConfigurationUpdateAcknowledge_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_MMEConfigurationUpdateAcknowledge_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MMEConfigurationUpdateFailure.c b/lib/asn/asn1c/S1ap-MMEConfigurationUpdateFailure.c new file mode 100644 index 0000000000..d93a7e5d2d --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEConfigurationUpdateFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MMEConfigurationUpdateFailure.h" + +static int +memb_s1ap_MMEConfigurationUpdateFailure_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_MMEConfigurationUpdateFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_MMEConfigurationUpdateFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_MMEConfigurationUpdateFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_MMEConfigurationUpdateFailure_ies_specs_2 = { + sizeof(struct S1ap_MMEConfigurationUpdateFailure__s1ap_MMEConfigurationUpdateFailure_ies), + offsetof(struct S1ap_MMEConfigurationUpdateFailure__s1ap_MMEConfigurationUpdateFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_2 = { + "s1ap-MMEConfigurationUpdateFailure-ies", + "s1ap-MMEConfigurationUpdateFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_tags_2, + sizeof(asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_MMEConfigurationUpdateFailure_ies_constr_2, + asn_MBR_s1ap_MMEConfigurationUpdateFailure_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_MMEConfigurationUpdateFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_MMEConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_MMEConfigurationUpdateFailure, s1ap_MMEConfigurationUpdateFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_MMEConfigurationUpdateFailure_ies_2, + memb_s1ap_MMEConfigurationUpdateFailure_ies_constraint_1, + &asn_PER_memb_s1ap_MMEConfigurationUpdateFailure_ies_constr_2, + 0, + "s1ap-MMEConfigurationUpdateFailure-ies" + }, +}; +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 } /* s1ap-MMEConfigurationUpdateFailure-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MMEConfigurationUpdateFailure = { + "S1ap-MMEConfigurationUpdateFailure", + "S1ap-MMEConfigurationUpdateFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_MMEConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_S1ap_MMEConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MMEConfigurationUpdateFailure.h b/lib/asn/asn1c/S1ap-MMEConfigurationUpdateFailure.h new file mode 100644 index 0000000000..9c7abb778d --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEConfigurationUpdateFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_MMEConfigurationUpdateFailure_H_ +#define _S1ap_MMEConfigurationUpdateFailure_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-MMEConfigurationUpdateFailure */ +typedef struct S1ap_MMEConfigurationUpdateFailure { + struct S1ap_MMEConfigurationUpdateFailure__s1ap_MMEConfigurationUpdateFailure_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_MMEConfigurationUpdateFailure_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_MMEConfigurationUpdateFailure_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MMEDirectInformationTransfer.c b/lib/asn/asn1c/S1ap-MMEDirectInformationTransfer.c new file mode 100644 index 0000000000..7ba6ec90ee --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEDirectInformationTransfer.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MMEDirectInformationTransfer.h" + +static int +memb_s1ap_MMEDirectInformationTransfer_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_MMEDirectInformationTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_MMEDirectInformationTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_MMEDirectInformationTransfer_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_MMEDirectInformationTransfer_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_MMEDirectInformationTransfer_ies_specs_2 = { + sizeof(struct S1ap_MMEDirectInformationTransfer__s1ap_MMEDirectInformationTransfer_ies), + offsetof(struct S1ap_MMEDirectInformationTransfer__s1ap_MMEDirectInformationTransfer_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_MMEDirectInformationTransfer_ies_2 = { + "s1ap-MMEDirectInformationTransfer-ies", + "s1ap-MMEDirectInformationTransfer-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_MMEDirectInformationTransfer_ies_tags_2, + sizeof(asn_DEF_s1ap_MMEDirectInformationTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEDirectInformationTransfer_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_MMEDirectInformationTransfer_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_MMEDirectInformationTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEDirectInformationTransfer_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_MMEDirectInformationTransfer_ies_constr_2, + asn_MBR_s1ap_MMEDirectInformationTransfer_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_MMEDirectInformationTransfer_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_MMEDirectInformationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_MMEDirectInformationTransfer, s1ap_MMEDirectInformationTransfer_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_MMEDirectInformationTransfer_ies_2, + memb_s1ap_MMEDirectInformationTransfer_ies_constraint_1, + &asn_PER_memb_s1ap_MMEDirectInformationTransfer_ies_constr_2, + 0, + "s1ap-MMEDirectInformationTransfer-ies" + }, +}; +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 } /* s1ap-MMEDirectInformationTransfer-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MMEDirectInformationTransfer = { + "S1ap-MMEDirectInformationTransfer", + "S1ap-MMEDirectInformationTransfer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_MMEDirectInformationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1ap_MMEDirectInformationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MMEDirectInformationTransfer.h b/lib/asn/asn1c/S1ap-MMEDirectInformationTransfer.h new file mode 100644 index 0000000000..7dece84b08 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEDirectInformationTransfer.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_MMEDirectInformationTransfer_H_ +#define _S1ap_MMEDirectInformationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-MMEDirectInformationTransfer */ +typedef struct S1ap_MMEDirectInformationTransfer { + struct S1ap_MMEDirectInformationTransfer__s1ap_MMEDirectInformationTransfer_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_MMEDirectInformationTransfer_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_MMEDirectInformationTransfer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MMERelaySupportIndicator.c b/lib/asn/asn1c/S1ap-MMERelaySupportIndicator.c new file mode 100644 index 0000000000..e7d420fc6e --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMERelaySupportIndicator.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MMERelaySupportIndicator.h" + +int +S1ap_MMERelaySupportIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_MMERelaySupportIndicator_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MMERelaySupportIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MMERelaySupportIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MMERelaySupportIndicator_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MMERelaySupportIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MMERelaySupportIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MMERelaySupportIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MMERelaySupportIndicator_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MMERelaySupportIndicator_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MMERelaySupportIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MMERelaySupportIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_MMERelaySupportIndicator_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-MMERelaySupportIndicator", + "S1ap-MMERelaySupportIndicator", + S1ap_MMERelaySupportIndicator_free, + S1ap_MMERelaySupportIndicator_print, + S1ap_MMERelaySupportIndicator_constraint, + S1ap_MMERelaySupportIndicator_decode_ber, + S1ap_MMERelaySupportIndicator_encode_der, + S1ap_MMERelaySupportIndicator_decode_xer, + S1ap_MMERelaySupportIndicator_encode_xer, + S1ap_MMERelaySupportIndicator_decode_uper, + S1ap_MMERelaySupportIndicator_encode_uper, + S1ap_MMERelaySupportIndicator_decode_aper, + S1ap_MMERelaySupportIndicator_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_MMERelaySupportIndicator_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_MMERelaySupportIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MMERelaySupportIndicator.h b/lib/asn/asn1c/S1ap-MMERelaySupportIndicator.h new file mode 100644 index 0000000000..cc1295e239 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMERelaySupportIndicator.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-MMEStatusTransfer.c b/lib/asn/asn1c/S1ap-MMEStatusTransfer.c new file mode 100644 index 0000000000..f00877200d --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEStatusTransfer.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MMEStatusTransfer.h" + +static int +memb_s1ap_MMEStatusTransfer_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_MMEStatusTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_MMEStatusTransfer_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_MMEStatusTransfer_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_MMEStatusTransfer_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_MMEStatusTransfer_ies_specs_2 = { + sizeof(struct S1ap_MMEStatusTransfer__s1ap_MMEStatusTransfer_ies), + offsetof(struct S1ap_MMEStatusTransfer__s1ap_MMEStatusTransfer_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_MMEStatusTransfer_ies_2 = { + "s1ap-MMEStatusTransfer-ies", + "s1ap-MMEStatusTransfer-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_MMEStatusTransfer_ies_tags_2, + sizeof(asn_DEF_s1ap_MMEStatusTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEStatusTransfer_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_MMEStatusTransfer_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_MMEStatusTransfer_ies_tags_2) + /sizeof(asn_DEF_s1ap_MMEStatusTransfer_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_MMEStatusTransfer_ies_constr_2, + asn_MBR_s1ap_MMEStatusTransfer_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_MMEStatusTransfer_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_MMEStatusTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_MMEStatusTransfer, s1ap_MMEStatusTransfer_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_MMEStatusTransfer_ies_2, + memb_s1ap_MMEStatusTransfer_ies_constraint_1, + &asn_PER_memb_s1ap_MMEStatusTransfer_ies_constr_2, + 0, + "s1ap-MMEStatusTransfer-ies" + }, +}; +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 } /* s1ap-MMEStatusTransfer-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MMEStatusTransfer = { + "S1ap-MMEStatusTransfer", + "S1ap-MMEStatusTransfer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_MMEStatusTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1ap_MMEStatusTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MMEStatusTransfer.h b/lib/asn/asn1c/S1ap-MMEStatusTransfer.h new file mode 100644 index 0000000000..613e14b743 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEStatusTransfer.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_MMEStatusTransfer_H_ +#define _S1ap_MMEStatusTransfer_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-MMEStatusTransfer */ +typedef struct S1ap_MMEStatusTransfer { + struct S1ap_MMEStatusTransfer__s1ap_MMEStatusTransfer_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_MMEStatusTransfer_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_MMEStatusTransfer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MMEname.c b/lib/asn/asn1c/S1ap-MMEname.c new file mode 100644 index 0000000000..2fbd64ec25 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEname.c @@ -0,0 +1,211 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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(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 >= 1LL && size <= 150LL) + && !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 void +S1ap_MMEname_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_PrintableString.free_struct; + td->print_struct = asn_DEF_PrintableString.print_struct; + td->check_constraints = asn_DEF_PrintableString.check_constraints; + td->ber_decoder = asn_DEF_PrintableString.ber_decoder; + td->der_encoder = asn_DEF_PrintableString.der_encoder; + td->xer_decoder = asn_DEF_PrintableString.xer_decoder; + td->xer_encoder = asn_DEF_PrintableString.xer_encoder; + td->uper_decoder = asn_DEF_PrintableString.uper_decoder; + td->uper_encoder = asn_DEF_PrintableString.uper_encoder; + td->aper_decoder = asn_DEF_PrintableString.aper_decoder; + td->aper_encoder = asn_DEF_PrintableString.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_PrintableString.per_constraints; + td->elements = asn_DEF_PrintableString.elements; + td->elements_count = asn_DEF_PrintableString.elements_count; + td->specifics = asn_DEF_PrintableString.specifics; +} + +void +S1ap_MMEname_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MMEname_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MMEname_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MMEname_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MMEname_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MMEname_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MMEname_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MMEname_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MMEname_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MMEname_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MMEname_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_MMEname_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32l, 122l } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1l, 150l } /* (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 = { + "S1ap-MMEname", + "S1ap-MMEname", + S1ap_MMEname_free, + S1ap_MMEname_print, + S1ap_MMEname_constraint, + S1ap_MMEname_decode_ber, + S1ap_MMEname_encode_der, + S1ap_MMEname_decode_xer, + S1ap_MMEname_encode_xer, + S1ap_MMEname_decode_uper, + S1ap_MMEname_encode_uper, + S1ap_MMEname_decode_aper, + S1ap_MMEname_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_MMEname_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-MMEname.h b/lib/asn/asn1c/S1ap-MMEname.h new file mode 100644 index 0000000000..2a57e96760 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MMEname.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-MSClassmark2.c b/lib/asn/asn1c/S1ap-MSClassmark2.c new file mode 100644 index 0000000000..1e3ef29e0e --- /dev/null +++ b/lib/asn/asn1c/S1ap-MSClassmark2.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MSClassmark2.h" + +int +S1ap_MSClassmark2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_MSClassmark2_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_MSClassmark2_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MSClassmark2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MSClassmark2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MSClassmark2_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MSClassmark2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MSClassmark2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MSClassmark2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MSClassmark2_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MSClassmark2_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MSClassmark2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MSClassmark2_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-MSClassmark2", + "S1ap-MSClassmark2", + S1ap_MSClassmark2_free, + S1ap_MSClassmark2_print, + S1ap_MSClassmark2_constraint, + S1ap_MSClassmark2_decode_ber, + S1ap_MSClassmark2_encode_der, + S1ap_MSClassmark2_decode_xer, + S1ap_MSClassmark2_encode_xer, + S1ap_MSClassmark2_decode_uper, + S1ap_MSClassmark2_encode_uper, + S1ap_MSClassmark2_decode_aper, + S1ap_MSClassmark2_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-MSClassmark2.h b/lib/asn/asn1c/S1ap-MSClassmark2.h new file mode 100644 index 0000000000..8043b10572 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MSClassmark2.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-MSClassmark3.c b/lib/asn/asn1c/S1ap-MSClassmark3.c new file mode 100644 index 0000000000..998cdb768e --- /dev/null +++ b/lib/asn/asn1c/S1ap-MSClassmark3.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MSClassmark3.h" + +int +S1ap_MSClassmark3_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_MSClassmark3_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_MSClassmark3_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MSClassmark3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MSClassmark3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MSClassmark3_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MSClassmark3_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MSClassmark3_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MSClassmark3_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MSClassmark3_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MSClassmark3_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MSClassmark3_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MSClassmark3_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-MSClassmark3", + "S1ap-MSClassmark3", + S1ap_MSClassmark3_free, + S1ap_MSClassmark3_print, + S1ap_MSClassmark3_constraint, + S1ap_MSClassmark3_decode_ber, + S1ap_MSClassmark3_encode_der, + S1ap_MSClassmark3_decode_xer, + S1ap_MSClassmark3_encode_xer, + S1ap_MSClassmark3_decode_uper, + S1ap_MSClassmark3_encode_uper, + S1ap_MSClassmark3_decode_aper, + S1ap_MSClassmark3_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-MSClassmark3.h b/lib/asn/asn1c/S1ap-MSClassmark3.h new file mode 100644 index 0000000000..c10e78a65c --- /dev/null +++ b/lib/asn/asn1c/S1ap-MSClassmark3.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-ManagementBasedMDTAllowed.c b/lib/asn/asn1c/S1ap-ManagementBasedMDTAllowed.c new file mode 100644 index 0000000000..5a69d1f89c --- /dev/null +++ b/lib/asn/asn1c/S1ap-ManagementBasedMDTAllowed.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ManagementBasedMDTAllowed.h" + +int +S1ap_ManagementBasedMDTAllowed_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_ManagementBasedMDTAllowed_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ManagementBasedMDTAllowed_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ManagementBasedMDTAllowed_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ManagementBasedMDTAllowed_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ManagementBasedMDTAllowed_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ManagementBasedMDTAllowed_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ManagementBasedMDTAllowed_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ManagementBasedMDTAllowed_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ManagementBasedMDTAllowed_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ManagementBasedMDTAllowed_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ManagementBasedMDTAllowed_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ManagementBasedMDTAllowed_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-ManagementBasedMDTAllowed", + "S1ap-ManagementBasedMDTAllowed", + S1ap_ManagementBasedMDTAllowed_free, + S1ap_ManagementBasedMDTAllowed_print, + S1ap_ManagementBasedMDTAllowed_constraint, + S1ap_ManagementBasedMDTAllowed_decode_ber, + S1ap_ManagementBasedMDTAllowed_encode_der, + S1ap_ManagementBasedMDTAllowed_decode_xer, + S1ap_ManagementBasedMDTAllowed_encode_xer, + S1ap_ManagementBasedMDTAllowed_decode_uper, + S1ap_ManagementBasedMDTAllowed_encode_uper, + S1ap_ManagementBasedMDTAllowed_decode_aper, + S1ap_ManagementBasedMDTAllowed_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ManagementBasedMDTAllowed_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_ManagementBasedMDTAllowed_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ManagementBasedMDTAllowed.h b/lib/asn/asn1c/S1ap-ManagementBasedMDTAllowed.h new file mode 100644 index 0000000000..1444660374 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ManagementBasedMDTAllowed.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-MeasurementThresholdA2.c b/lib/asn/asn1c/S1ap-MeasurementThresholdA2.c new file mode 100644 index 0000000000..d325ee9c3f --- /dev/null +++ b/lib/asn/asn1c/S1ap-MeasurementThresholdA2.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MeasurementThresholdA2.h" + +static asn_per_constraints_t asn_PER_type_S1ap_MeasurementThresholdA2_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_MeasurementThresholdA2 = { + "S1ap-MeasurementThresholdA2", + "S1ap-MeasurementThresholdA2", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_MeasurementThresholdA2_constr_1, + asn_MBR_S1ap_MeasurementThresholdA2_1, + 2, /* Elements count */ + &asn_SPC_S1ap_MeasurementThresholdA2_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-MeasurementThresholdA2.h b/lib/asn/asn1c/S1ap-MeasurementThresholdA2.h new file mode 100644 index 0000000000..d745917bb6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MeasurementThresholdA2.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 { + S1ap_MeasurementThresholdA2_PR_NOTHING, /* No components present */ + S1ap_MeasurementThresholdA2_PR_threshold_RSRP, + S1ap_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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_MeasurementThresholdA2_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-MeasurementsToActivate.c b/lib/asn/asn1c/S1ap-MeasurementsToActivate.c new file mode 100644 index 0000000000..213c2e4376 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MeasurementsToActivate.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MeasurementsToActivate.h" + +int +S1ap_MeasurementsToActivate_constraint(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 == 8LL)) { + /* 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 void +S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_MeasurementsToActivate_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MeasurementsToActivate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MeasurementsToActivate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MeasurementsToActivate_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MeasurementsToActivate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MeasurementsToActivate_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MeasurementsToActivate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MeasurementsToActivate_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MeasurementsToActivate_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MeasurementsToActivate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MeasurementsToActivate_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_MeasurementsToActivate_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (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 = { + "S1ap-MeasurementsToActivate", + "S1ap-MeasurementsToActivate", + S1ap_MeasurementsToActivate_free, + S1ap_MeasurementsToActivate_print, + S1ap_MeasurementsToActivate_constraint, + S1ap_MeasurementsToActivate_decode_ber, + S1ap_MeasurementsToActivate_encode_der, + S1ap_MeasurementsToActivate_decode_xer, + S1ap_MeasurementsToActivate_encode_xer, + S1ap_MeasurementsToActivate_decode_uper, + S1ap_MeasurementsToActivate_encode_uper, + S1ap_MeasurementsToActivate_decode_aper, + S1ap_MeasurementsToActivate_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_MeasurementsToActivate_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-MeasurementsToActivate.h b/lib/asn/asn1c/S1ap-MeasurementsToActivate.h new file mode 100644 index 0000000000..2cf6b2e376 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MeasurementsToActivate.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-MessageIdentifier.c b/lib/asn/asn1c/S1ap-MessageIdentifier.c new file mode 100644 index 0000000000..c7e87d5ecb --- /dev/null +++ b/lib/asn/asn1c/S1ap-MessageIdentifier.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-MessageIdentifier.h" + +int +S1ap_MessageIdentifier_constraint(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 == 16LL)) { + /* 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 void +S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_MessageIdentifier_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_MessageIdentifier_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_MessageIdentifier_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_MessageIdentifier_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_MessageIdentifier_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_MessageIdentifier_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_MessageIdentifier_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_MessageIdentifier_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_MessageIdentifier_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_MessageIdentifier_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_MessageIdentifier_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_MessageIdentifier_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16l, 16l } /* (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 = { + "S1ap-MessageIdentifier", + "S1ap-MessageIdentifier", + S1ap_MessageIdentifier_free, + S1ap_MessageIdentifier_print, + S1ap_MessageIdentifier_constraint, + S1ap_MessageIdentifier_decode_ber, + S1ap_MessageIdentifier_encode_der, + S1ap_MessageIdentifier_decode_xer, + S1ap_MessageIdentifier_encode_xer, + S1ap_MessageIdentifier_decode_uper, + S1ap_MessageIdentifier_encode_uper, + S1ap_MessageIdentifier_decode_aper, + S1ap_MessageIdentifier_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_MessageIdentifier_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-MessageIdentifier.h b/lib/asn/asn1c/S1ap-MessageIdentifier.h new file mode 100644 index 0000000000..8a378b5a31 --- /dev/null +++ b/lib/asn/asn1c/S1ap-MessageIdentifier.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-NAS-PDU.c b/lib/asn/asn1c/S1ap-NAS-PDU.c new file mode 100644 index 0000000000..844a36a093 --- /dev/null +++ b/lib/asn/asn1c/S1ap-NAS-PDU.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-NAS-PDU.h" + +int +S1ap_NAS_PDU_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_NAS_PDU_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_NAS_PDU_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_NAS_PDU_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_NAS_PDU_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_NAS_PDU_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_NAS_PDU_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_NAS_PDU_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_NAS_PDU_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_NAS_PDU_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_NAS_PDU_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_NAS_PDU_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NAS_PDU_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-NAS-PDU", + "S1ap-NAS-PDU", + S1ap_NAS_PDU_free, + S1ap_NAS_PDU_print, + S1ap_NAS_PDU_constraint, + S1ap_NAS_PDU_decode_ber, + S1ap_NAS_PDU_encode_der, + S1ap_NAS_PDU_decode_xer, + S1ap_NAS_PDU_encode_xer, + S1ap_NAS_PDU_decode_uper, + S1ap_NAS_PDU_encode_uper, + S1ap_NAS_PDU_decode_aper, + S1ap_NAS_PDU_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-NAS-PDU.h b/lib/asn/asn1c/S1ap-NAS-PDU.h new file mode 100644 index 0000000000..f74c85f85e --- /dev/null +++ b/lib/asn/asn1c/S1ap-NAS-PDU.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-NASNonDeliveryIndication.c b/lib/asn/asn1c/S1ap-NASNonDeliveryIndication.c new file mode 100644 index 0000000000..1d2d7b9552 --- /dev/null +++ b/lib/asn/asn1c/S1ap-NASNonDeliveryIndication.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-NASNonDeliveryIndication.h" + +static int +memb_s1ap_NASNonDeliveryIndication_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_NASNonDeliveryIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_NASNonDeliveryIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_NASNonDeliveryIndication_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_NASNonDeliveryIndication_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_NASNonDeliveryIndication_ies_specs_2 = { + sizeof(struct S1ap_NASNonDeliveryIndication__s1ap_NASNonDeliveryIndication_ies), + offsetof(struct S1ap_NASNonDeliveryIndication__s1ap_NASNonDeliveryIndication_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_NASNonDeliveryIndication_ies_2 = { + "s1ap-NASNonDeliveryIndication-ies", + "s1ap-NASNonDeliveryIndication-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_NASNonDeliveryIndication_ies_tags_2, + sizeof(asn_DEF_s1ap_NASNonDeliveryIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_NASNonDeliveryIndication_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_NASNonDeliveryIndication_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_NASNonDeliveryIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_NASNonDeliveryIndication_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_NASNonDeliveryIndication_ies_constr_2, + asn_MBR_s1ap_NASNonDeliveryIndication_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_NASNonDeliveryIndication_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_NASNonDeliveryIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_NASNonDeliveryIndication, s1ap_NASNonDeliveryIndication_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_NASNonDeliveryIndication_ies_2, + memb_s1ap_NASNonDeliveryIndication_ies_constraint_1, + &asn_PER_memb_s1ap_NASNonDeliveryIndication_ies_constr_2, + 0, + "s1ap-NASNonDeliveryIndication-ies" + }, +}; +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 } /* s1ap-NASNonDeliveryIndication-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_NASNonDeliveryIndication = { + "S1ap-NASNonDeliveryIndication", + "S1ap-NASNonDeliveryIndication", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_NASNonDeliveryIndication_1, + 1, /* Elements count */ + &asn_SPC_S1ap_NASNonDeliveryIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-NASNonDeliveryIndication.h b/lib/asn/asn1c/S1ap-NASNonDeliveryIndication.h new file mode 100644 index 0000000000..0d70bd4386 --- /dev/null +++ b/lib/asn/asn1c/S1ap-NASNonDeliveryIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_NASNonDeliveryIndication_H_ +#define _S1ap_NASNonDeliveryIndication_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-NASNonDeliveryIndication */ +typedef struct S1ap_NASNonDeliveryIndication { + struct S1ap_NASNonDeliveryIndication__s1ap_NASNonDeliveryIndication_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_NASNonDeliveryIndication_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_NASNonDeliveryIndication_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-NASSecurityParametersfromE-UTRAN.c b/lib/asn/asn1c/S1ap-NASSecurityParametersfromE-UTRAN.c new file mode 100644 index 0000000000..cf0b83647e --- /dev/null +++ b/lib/asn/asn1c/S1ap-NASSecurityParametersfromE-UTRAN.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-NASSecurityParametersfromE-UTRAN.h" + +int +S1ap_NASSecurityParametersfromE_UTRAN_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_NASSecurityParametersfromE_UTRAN_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_NASSecurityParametersfromE_UTRAN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_NASSecurityParametersfromE_UTRAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_NASSecurityParametersfromE_UTRAN_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_NASSecurityParametersfromE_UTRAN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_NASSecurityParametersfromE_UTRAN_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_NASSecurityParametersfromE_UTRAN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_NASSecurityParametersfromE_UTRAN_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_NASSecurityParametersfromE_UTRAN_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_NASSecurityParametersfromE_UTRAN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NASSecurityParametersfromE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-NASSecurityParametersfromE-UTRAN", + "S1ap-NASSecurityParametersfromE-UTRAN", + S1ap_NASSecurityParametersfromE_UTRAN_free, + S1ap_NASSecurityParametersfromE_UTRAN_print, + S1ap_NASSecurityParametersfromE_UTRAN_constraint, + S1ap_NASSecurityParametersfromE_UTRAN_decode_ber, + S1ap_NASSecurityParametersfromE_UTRAN_encode_der, + S1ap_NASSecurityParametersfromE_UTRAN_decode_xer, + S1ap_NASSecurityParametersfromE_UTRAN_encode_xer, + S1ap_NASSecurityParametersfromE_UTRAN_decode_uper, + S1ap_NASSecurityParametersfromE_UTRAN_encode_uper, + S1ap_NASSecurityParametersfromE_UTRAN_decode_aper, + S1ap_NASSecurityParametersfromE_UTRAN_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-NASSecurityParametersfromE-UTRAN.h b/lib/asn/asn1c/S1ap-NASSecurityParametersfromE-UTRAN.h new file mode 100644 index 0000000000..277b63d245 --- /dev/null +++ b/lib/asn/asn1c/S1ap-NASSecurityParametersfromE-UTRAN.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-NASSecurityParameterstoE-UTRAN.c b/lib/asn/asn1c/S1ap-NASSecurityParameterstoE-UTRAN.c new file mode 100644 index 0000000000..4fd3f5469d --- /dev/null +++ b/lib/asn/asn1c/S1ap-NASSecurityParameterstoE-UTRAN.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-NASSecurityParameterstoE-UTRAN.h" + +int +S1ap_NASSecurityParameterstoE_UTRAN_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_NASSecurityParameterstoE_UTRAN_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_NASSecurityParameterstoE_UTRAN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_NASSecurityParameterstoE_UTRAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_NASSecurityParameterstoE_UTRAN_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_NASSecurityParameterstoE_UTRAN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_NASSecurityParameterstoE_UTRAN_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_NASSecurityParameterstoE_UTRAN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_NASSecurityParameterstoE_UTRAN_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_NASSecurityParameterstoE_UTRAN_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_NASSecurityParameterstoE_UTRAN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NASSecurityParameterstoE_UTRAN_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-NASSecurityParameterstoE-UTRAN", + "S1ap-NASSecurityParameterstoE-UTRAN", + S1ap_NASSecurityParameterstoE_UTRAN_free, + S1ap_NASSecurityParameterstoE_UTRAN_print, + S1ap_NASSecurityParameterstoE_UTRAN_constraint, + S1ap_NASSecurityParameterstoE_UTRAN_decode_ber, + S1ap_NASSecurityParameterstoE_UTRAN_encode_der, + S1ap_NASSecurityParameterstoE_UTRAN_decode_xer, + S1ap_NASSecurityParameterstoE_UTRAN_encode_xer, + S1ap_NASSecurityParameterstoE_UTRAN_decode_uper, + S1ap_NASSecurityParameterstoE_UTRAN_encode_uper, + S1ap_NASSecurityParameterstoE_UTRAN_decode_aper, + S1ap_NASSecurityParameterstoE_UTRAN_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-NASSecurityParameterstoE-UTRAN.h b/lib/asn/asn1c/S1ap-NASSecurityParameterstoE-UTRAN.h new file mode 100644 index 0000000000..4887778dea --- /dev/null +++ b/lib/asn/asn1c/S1ap-NASSecurityParameterstoE-UTRAN.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-NumberOfBroadcasts.c b/lib/asn/asn1c/S1ap-NumberOfBroadcasts.c new file mode 100644 index 0000000000..27fed3a72a --- /dev/null +++ b/lib/asn/asn1c/S1ap-NumberOfBroadcasts.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-NumberOfBroadcasts.h" + +int +S1ap_NumberOfBroadcasts_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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 void +S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_NumberOfBroadcasts_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_NumberOfBroadcasts_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_NumberOfBroadcasts_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_NumberOfBroadcasts_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_NumberOfBroadcasts_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_NumberOfBroadcasts_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_NumberOfBroadcasts_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_NumberOfBroadcasts_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_NumberOfBroadcasts_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_NumberOfBroadcasts_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NumberOfBroadcasts_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_NumberOfBroadcasts_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (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 = { + "S1ap-NumberOfBroadcasts", + "S1ap-NumberOfBroadcasts", + S1ap_NumberOfBroadcasts_free, + S1ap_NumberOfBroadcasts_print, + S1ap_NumberOfBroadcasts_constraint, + S1ap_NumberOfBroadcasts_decode_ber, + S1ap_NumberOfBroadcasts_encode_der, + S1ap_NumberOfBroadcasts_decode_xer, + S1ap_NumberOfBroadcasts_encode_xer, + S1ap_NumberOfBroadcasts_decode_uper, + S1ap_NumberOfBroadcasts_encode_uper, + S1ap_NumberOfBroadcasts_decode_aper, + S1ap_NumberOfBroadcasts_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_NumberOfBroadcasts_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-NumberOfBroadcasts.h b/lib/asn/asn1c/S1ap-NumberOfBroadcasts.h new file mode 100644 index 0000000000..84688e732d --- /dev/null +++ b/lib/asn/asn1c/S1ap-NumberOfBroadcasts.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-NumberofBroadcastRequest.c b/lib/asn/asn1c/S1ap-NumberofBroadcastRequest.c new file mode 100644 index 0000000000..04514dde19 --- /dev/null +++ b/lib/asn/asn1c/S1ap-NumberofBroadcastRequest.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-NumberofBroadcastRequest.h" + +int +S1ap_NumberofBroadcastRequest_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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 void +S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_NumberofBroadcastRequest_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_NumberofBroadcastRequest_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_NumberofBroadcastRequest_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_NumberofBroadcastRequest_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_NumberofBroadcastRequest_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_NumberofBroadcastRequest_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_NumberofBroadcastRequest_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_NumberofBroadcastRequest_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_NumberofBroadcastRequest_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_NumberofBroadcastRequest_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_NumberofBroadcastRequest_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_NumberofBroadcastRequest_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (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 = { + "S1ap-NumberofBroadcastRequest", + "S1ap-NumberofBroadcastRequest", + S1ap_NumberofBroadcastRequest_free, + S1ap_NumberofBroadcastRequest_print, + S1ap_NumberofBroadcastRequest_constraint, + S1ap_NumberofBroadcastRequest_decode_ber, + S1ap_NumberofBroadcastRequest_encode_der, + S1ap_NumberofBroadcastRequest_decode_xer, + S1ap_NumberofBroadcastRequest_encode_xer, + S1ap_NumberofBroadcastRequest_decode_uper, + S1ap_NumberofBroadcastRequest_encode_uper, + S1ap_NumberofBroadcastRequest_decode_aper, + S1ap_NumberofBroadcastRequest_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_NumberofBroadcastRequest_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-NumberofBroadcastRequest.h b/lib/asn/asn1c/S1ap-NumberofBroadcastRequest.h new file mode 100644 index 0000000000..9f05a9a30b --- /dev/null +++ b/lib/asn/asn1c/S1ap-NumberofBroadcastRequest.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-OldBSS-ToNewBSS-Information.c b/lib/asn/asn1c/S1ap-OldBSS-ToNewBSS-Information.c new file mode 100644 index 0000000000..d4ba7f8d29 --- /dev/null +++ b/lib/asn/asn1c/S1ap-OldBSS-ToNewBSS-Information.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-OldBSS-ToNewBSS-Information.h" + +int +S1ap_OldBSS_ToNewBSS_Information_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_OldBSS_ToNewBSS_Information_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_OldBSS_ToNewBSS_Information_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_OldBSS_ToNewBSS_Information_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_OldBSS_ToNewBSS_Information_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_OldBSS_ToNewBSS_Information_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_OldBSS_ToNewBSS_Information_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_OldBSS_ToNewBSS_Information_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_OldBSS_ToNewBSS_Information_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_OldBSS_ToNewBSS_Information_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_OldBSS_ToNewBSS_Information_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-OldBSS-ToNewBSS-Information", + "S1ap-OldBSS-ToNewBSS-Information", + S1ap_OldBSS_ToNewBSS_Information_free, + S1ap_OldBSS_ToNewBSS_Information_print, + S1ap_OldBSS_ToNewBSS_Information_constraint, + S1ap_OldBSS_ToNewBSS_Information_decode_ber, + S1ap_OldBSS_ToNewBSS_Information_encode_der, + S1ap_OldBSS_ToNewBSS_Information_decode_xer, + S1ap_OldBSS_ToNewBSS_Information_encode_xer, + S1ap_OldBSS_ToNewBSS_Information_decode_uper, + S1ap_OldBSS_ToNewBSS_Information_encode_uper, + S1ap_OldBSS_ToNewBSS_Information_decode_aper, + S1ap_OldBSS_ToNewBSS_Information_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-OldBSS-ToNewBSS-Information.h b/lib/asn/asn1c/S1ap-OldBSS-ToNewBSS-Information.h new file mode 100644 index 0000000000..8e9bd3b850 --- /dev/null +++ b/lib/asn/asn1c/S1ap-OldBSS-ToNewBSS-Information.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-OverloadAction.c b/lib/asn/asn1c/S1ap-OverloadAction.c new file mode 100644 index 0000000000..e1290c8935 --- /dev/null +++ b/lib/asn/asn1c/S1ap-OverloadAction.c @@ -0,0 +1,174 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-OverloadAction.h" + +int +S1ap_OverloadAction_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_OverloadAction_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_OverloadAction_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_OverloadAction_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_OverloadAction_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_OverloadAction_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_OverloadAction_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_OverloadAction_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_OverloadAction_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_OverloadAction_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_OverloadAction_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_OverloadAction_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_OverloadAction_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_OverloadAction_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (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" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1ap_OverloadAction_enum2value_1[] = { + 2, /* permit-emergency-sessions-and-mobile-terminated-services-only(2) */ + 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 */ +}; +static 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 */ + 5, /* 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 = { + "S1ap-OverloadAction", + "S1ap-OverloadAction", + S1ap_OverloadAction_free, + S1ap_OverloadAction_print, + S1ap_OverloadAction_constraint, + S1ap_OverloadAction_decode_ber, + S1ap_OverloadAction_encode_der, + S1ap_OverloadAction_decode_xer, + S1ap_OverloadAction_encode_xer, + S1ap_OverloadAction_decode_uper, + S1ap_OverloadAction_encode_uper, + S1ap_OverloadAction_decode_aper, + S1ap_OverloadAction_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_OverloadAction_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_OverloadAction_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-OverloadAction.h b/lib/asn/asn1c/S1ap-OverloadAction.h new file mode 100644 index 0000000000..cf822cfd6b --- /dev/null +++ b/lib/asn/asn1c/S1ap-OverloadAction.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 +} e_S1ap_OverloadAction; + +/* S1ap-OverloadAction */ +typedef long S1ap_OverloadAction_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_OverloadAction; +asn_struct_free_f S1ap_OverloadAction_free; +asn_struct_print_f S1ap_OverloadAction_print; +asn_constr_check_f S1ap_OverloadAction_constraint; +ber_type_decoder_f S1ap_OverloadAction_decode_ber; +der_type_encoder_f S1ap_OverloadAction_encode_der; +xer_type_decoder_f S1ap_OverloadAction_decode_xer; +xer_type_encoder_f S1ap_OverloadAction_encode_xer; +per_type_decoder_f S1ap_OverloadAction_decode_uper; +per_type_encoder_f S1ap_OverloadAction_encode_uper; +per_type_decoder_f S1ap_OverloadAction_decode_aper; +per_type_encoder_f S1ap_OverloadAction_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_OverloadAction_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-OverloadResponse.c b/lib/asn/asn1c/S1ap-OverloadResponse.c new file mode 100644 index 0000000000..e0e5e1794f --- /dev/null +++ b/lib/asn/asn1c/S1ap-OverloadResponse.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-OverloadResponse.h" + +static asn_per_constraints_t asn_PER_type_S1ap_OverloadResponse_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_OverloadResponse = { + "S1ap-OverloadResponse", + "S1ap-OverloadResponse", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_OverloadResponse_constr_1, + asn_MBR_S1ap_OverloadResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_OverloadResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-OverloadResponse.h b/lib/asn/asn1c/S1ap-OverloadResponse.h new file mode 100644 index 0000000000..deb60738e3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-OverloadResponse.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 { + S1ap_OverloadResponse_PR_NOTHING, /* No components present */ + S1ap_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/asn/asn1c/S1ap-OverloadStart.c b/lib/asn/asn1c/S1ap-OverloadStart.c new file mode 100644 index 0000000000..11ed1dada9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-OverloadStart.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-OverloadStart.h" + +static int +memb_s1ap_OverloadStart_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_OverloadStart_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_OverloadStart_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_OverloadStart_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_OverloadStart_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_OverloadStart_ies_specs_2 = { + sizeof(struct S1ap_OverloadStart__s1ap_OverloadStart_ies), + offsetof(struct S1ap_OverloadStart__s1ap_OverloadStart_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_OverloadStart_ies_2 = { + "s1ap-OverloadStart-ies", + "s1ap-OverloadStart-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_OverloadStart_ies_tags_2, + sizeof(asn_DEF_s1ap_OverloadStart_ies_tags_2) + /sizeof(asn_DEF_s1ap_OverloadStart_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_OverloadStart_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_OverloadStart_ies_tags_2) + /sizeof(asn_DEF_s1ap_OverloadStart_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_OverloadStart_ies_constr_2, + asn_MBR_s1ap_OverloadStart_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_OverloadStart_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_OverloadStart_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_OverloadStart, s1ap_OverloadStart_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_OverloadStart_ies_2, + memb_s1ap_OverloadStart_ies_constraint_1, + &asn_PER_memb_s1ap_OverloadStart_ies_constr_2, + 0, + "s1ap-OverloadStart-ies" + }, +}; +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 } /* s1ap-OverloadStart-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_OverloadStart = { + "S1ap-OverloadStart", + "S1ap-OverloadStart", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_OverloadStart_1, + 1, /* Elements count */ + &asn_SPC_S1ap_OverloadStart_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-OverloadStart.h b/lib/asn/asn1c/S1ap-OverloadStart.h new file mode 100644 index 0000000000..d4c1123f12 --- /dev/null +++ b/lib/asn/asn1c/S1ap-OverloadStart.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_OverloadStart_H_ +#define _S1ap_OverloadStart_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-OverloadStart */ +typedef struct S1ap_OverloadStart { + struct S1ap_OverloadStart__s1ap_OverloadStart_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_OverloadStart_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_OverloadStart_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-OverloadStop.c b/lib/asn/asn1c/S1ap-OverloadStop.c new file mode 100644 index 0000000000..db9dc62045 --- /dev/null +++ b/lib/asn/asn1c/S1ap-OverloadStop.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-OverloadStop.h" + +static int +memb_s1ap_OverloadStop_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_OverloadStop_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_OverloadStop_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_OverloadStop_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_OverloadStop_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_OverloadStop_ies_specs_2 = { + sizeof(struct S1ap_OverloadStop__s1ap_OverloadStop_ies), + offsetof(struct S1ap_OverloadStop__s1ap_OverloadStop_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_OverloadStop_ies_2 = { + "s1ap-OverloadStop-ies", + "s1ap-OverloadStop-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_OverloadStop_ies_tags_2, + sizeof(asn_DEF_s1ap_OverloadStop_ies_tags_2) + /sizeof(asn_DEF_s1ap_OverloadStop_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_OverloadStop_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_OverloadStop_ies_tags_2) + /sizeof(asn_DEF_s1ap_OverloadStop_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_OverloadStop_ies_constr_2, + asn_MBR_s1ap_OverloadStop_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_OverloadStop_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_OverloadStop_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_OverloadStop, s1ap_OverloadStop_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_OverloadStop_ies_2, + memb_s1ap_OverloadStop_ies_constraint_1, + &asn_PER_memb_s1ap_OverloadStop_ies_constr_2, + 0, + "s1ap-OverloadStop-ies" + }, +}; +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 } /* s1ap-OverloadStop-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_OverloadStop = { + "S1ap-OverloadStop", + "S1ap-OverloadStop", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_OverloadStop_1, + 1, /* Elements count */ + &asn_SPC_S1ap_OverloadStop_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-OverloadStop.h b/lib/asn/asn1c/S1ap-OverloadStop.h new file mode 100644 index 0000000000..4f18ceab2a --- /dev/null +++ b/lib/asn/asn1c/S1ap-OverloadStop.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_OverloadStop_H_ +#define _S1ap_OverloadStop_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-OverloadStop */ +typedef struct S1ap_OverloadStop { + struct S1ap_OverloadStop__s1ap_OverloadStop_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_OverloadStop_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_OverloadStop_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-PDCP-SN.c b/lib/asn/asn1c/S1ap-PDCP-SN.c new file mode 100644 index 0000000000..12c219425b --- /dev/null +++ b/lib/asn/asn1c/S1ap-PDCP-SN.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PDCP-SN.h" + +int +S1ap_PDCP_SN_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 4095LL)) { + /* 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 void +S1ap_PDCP_SN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_PDCP_SN_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_PDCP_SN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_PDCP_SN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_PDCP_SN_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_PDCP_SN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_PDCP_SN_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_PDCP_SN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_PDCP_SN_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_PDCP_SN_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_PDCP_SN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PDCP_SN_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_PDCP_SN_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0l, 4095l } /* (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 = { + "S1ap-PDCP-SN", + "S1ap-PDCP-SN", + S1ap_PDCP_SN_free, + S1ap_PDCP_SN_print, + S1ap_PDCP_SN_constraint, + S1ap_PDCP_SN_decode_ber, + S1ap_PDCP_SN_encode_der, + S1ap_PDCP_SN_decode_xer, + S1ap_PDCP_SN_encode_xer, + S1ap_PDCP_SN_decode_uper, + S1ap_PDCP_SN_encode_uper, + S1ap_PDCP_SN_decode_aper, + S1ap_PDCP_SN_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_PDCP_SN_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-PDCP-SN.h b/lib/asn/asn1c/S1ap-PDCP-SN.h new file mode 100644 index 0000000000..94b1e21d17 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PDCP-SN.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-PLMNidentity.c b/lib/asn/asn1c/S1ap-PLMNidentity.c new file mode 100644 index 0000000000..8718c18014 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PLMNidentity.c @@ -0,0 +1,162 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PLMNidentity.h" + +int +S1ap_PLMNidentity_constraint(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 == 3LL)) { + /* 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 void +S1ap_PLMNidentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_S1ap_TBCD_STRING.free_struct; + td->print_struct = asn_DEF_S1ap_TBCD_STRING.print_struct; + td->check_constraints = asn_DEF_S1ap_TBCD_STRING.check_constraints; + td->ber_decoder = asn_DEF_S1ap_TBCD_STRING.ber_decoder; + td->der_encoder = asn_DEF_S1ap_TBCD_STRING.der_encoder; + td->xer_decoder = asn_DEF_S1ap_TBCD_STRING.xer_decoder; + td->xer_encoder = asn_DEF_S1ap_TBCD_STRING.xer_encoder; + td->uper_decoder = asn_DEF_S1ap_TBCD_STRING.uper_decoder; + td->uper_encoder = asn_DEF_S1ap_TBCD_STRING.uper_encoder; + td->aper_decoder = asn_DEF_S1ap_TBCD_STRING.aper_decoder; + td->aper_encoder = asn_DEF_S1ap_TBCD_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_S1ap_TBCD_STRING.per_constraints; + td->elements = asn_DEF_S1ap_TBCD_STRING.elements; + td->elements_count = asn_DEF_S1ap_TBCD_STRING.elements_count; + td->specifics = asn_DEF_S1ap_TBCD_STRING.specifics; +} + +void +S1ap_PLMNidentity_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_PLMNidentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_PLMNidentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_PLMNidentity_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_PLMNidentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_PLMNidentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_PLMNidentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_PLMNidentity_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_PLMNidentity_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_PLMNidentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PLMNidentity_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-PLMNidentity", + "S1ap-PLMNidentity", + S1ap_PLMNidentity_free, + S1ap_PLMNidentity_print, + S1ap_PLMNidentity_constraint, + S1ap_PLMNidentity_decode_ber, + S1ap_PLMNidentity_encode_der, + S1ap_PLMNidentity_decode_xer, + S1ap_PLMNidentity_encode_xer, + S1ap_PLMNidentity_decode_uper, + S1ap_PLMNidentity_encode_uper, + S1ap_PLMNidentity_decode_aper, + S1ap_PLMNidentity_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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 */ + 0, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-PLMNidentity.h b/lib/asn/asn1c/S1ap-PLMNidentity.h new file mode 100644 index 0000000000..25035025fd --- /dev/null +++ b/lib/asn/asn1c/S1ap-PLMNidentity.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-PS-ServiceNotAvailable.c b/lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.c new file mode 100644 index 0000000000..17153a6089 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PS-ServiceNotAvailable.h" + +int +S1ap_PS_ServiceNotAvailable_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_PS_ServiceNotAvailable_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_PS_ServiceNotAvailable_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_PS_ServiceNotAvailable_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_PS_ServiceNotAvailable_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_PS_ServiceNotAvailable_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_PS_ServiceNotAvailable_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_PS_ServiceNotAvailable_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_PS_ServiceNotAvailable_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_PS_ServiceNotAvailable_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_PS_ServiceNotAvailable_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PS_ServiceNotAvailable_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_PS_ServiceNotAvailable_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-PS-ServiceNotAvailable", + "S1ap-PS-ServiceNotAvailable", + S1ap_PS_ServiceNotAvailable_free, + S1ap_PS_ServiceNotAvailable_print, + S1ap_PS_ServiceNotAvailable_constraint, + S1ap_PS_ServiceNotAvailable_decode_ber, + S1ap_PS_ServiceNotAvailable_encode_der, + S1ap_PS_ServiceNotAvailable_decode_xer, + S1ap_PS_ServiceNotAvailable_encode_xer, + S1ap_PS_ServiceNotAvailable_decode_uper, + S1ap_PS_ServiceNotAvailable_encode_uper, + S1ap_PS_ServiceNotAvailable_decode_aper, + S1ap_PS_ServiceNotAvailable_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_PS_ServiceNotAvailable_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_PS_ServiceNotAvailable_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.h b/lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.h new file mode 100644 index 0000000000..454609e541 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PS-ServiceNotAvailable.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-Paging.c b/lib/asn/asn1c/S1ap-Paging.c new file mode 100644 index 0000000000..f1b7f6174e --- /dev/null +++ b/lib/asn/asn1c/S1ap-Paging.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Paging.h" + +static int +memb_s1ap_Paging_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_Paging_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_Paging_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_Paging_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_Paging_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_Paging_ies_specs_2 = { + sizeof(struct S1ap_Paging__s1ap_Paging_ies), + offsetof(struct S1ap_Paging__s1ap_Paging_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_Paging_ies_2 = { + "s1ap-Paging-ies", + "s1ap-Paging-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_Paging_ies_tags_2, + sizeof(asn_DEF_s1ap_Paging_ies_tags_2) + /sizeof(asn_DEF_s1ap_Paging_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_Paging_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_Paging_ies_tags_2) + /sizeof(asn_DEF_s1ap_Paging_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_Paging_ies_constr_2, + asn_MBR_s1ap_Paging_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_Paging_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_Paging_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_Paging, s1ap_Paging_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_Paging_ies_2, + memb_s1ap_Paging_ies_constraint_1, + &asn_PER_memb_s1ap_Paging_ies_constr_2, + 0, + "s1ap-Paging-ies" + }, +}; +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 } /* s1ap-Paging-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_Paging = { + "S1ap-Paging", + "S1ap-Paging", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_Paging_1, + 1, /* Elements count */ + &asn_SPC_S1ap_Paging_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Paging.h b/lib/asn/asn1c/S1ap-Paging.h new file mode 100644 index 0000000000..11f39aeba8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Paging.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_Paging_H_ +#define _S1ap_Paging_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-Paging */ +typedef struct S1ap_Paging { + struct S1ap_Paging__s1ap_Paging_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_Paging_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_Paging_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-PagingDRX.c b/lib/asn/asn1c/S1ap-PagingDRX.c new file mode 100644 index 0000000000..e8ed6bf5d6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PagingDRX.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PagingDRX.h" + +int +S1ap_PagingDRX_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_PagingDRX_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_PagingDRX_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_PagingDRX_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_PagingDRX_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_PagingDRX_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_PagingDRX_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_PagingDRX_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_PagingDRX_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_PagingDRX_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_PagingDRX_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_PagingDRX_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PagingDRX_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_PagingDRX_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (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 = { + "S1ap-PagingDRX", + "S1ap-PagingDRX", + S1ap_PagingDRX_free, + S1ap_PagingDRX_print, + S1ap_PagingDRX_constraint, + S1ap_PagingDRX_decode_ber, + S1ap_PagingDRX_encode_der, + S1ap_PagingDRX_decode_xer, + S1ap_PagingDRX_encode_xer, + S1ap_PagingDRX_decode_uper, + S1ap_PagingDRX_encode_uper, + S1ap_PagingDRX_decode_aper, + S1ap_PagingDRX_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_PagingDRX_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_PagingDRX_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PagingDRX.h b/lib/asn/asn1c/S1ap-PagingDRX.h new file mode 100644 index 0000000000..93928e5125 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PagingDRX.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-PagingPriority.c b/lib/asn/asn1c/S1ap-PagingPriority.c new file mode 100644 index 0000000000..d584947ddf --- /dev/null +++ b/lib/asn/asn1c/S1ap-PagingPriority.c @@ -0,0 +1,180 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PagingPriority.h" + +int +S1ap_PagingPriority_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_PagingPriority_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_PagingPriority_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_PagingPriority_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_PagingPriority_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_PagingPriority_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_PagingPriority_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_PagingPriority_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_PagingPriority_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_PagingPriority_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_PagingPriority_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_PagingPriority_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PagingPriority_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_PagingPriority_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 7l } /* (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 = { + "S1ap-PagingPriority", + "S1ap-PagingPriority", + S1ap_PagingPriority_free, + S1ap_PagingPriority_print, + S1ap_PagingPriority_constraint, + S1ap_PagingPriority_decode_ber, + S1ap_PagingPriority_encode_der, + S1ap_PagingPriority_decode_xer, + S1ap_PagingPriority_encode_xer, + S1ap_PagingPriority_decode_uper, + S1ap_PagingPriority_encode_uper, + S1ap_PagingPriority_decode_aper, + S1ap_PagingPriority_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_PagingPriority_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_PagingPriority_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PagingPriority.h b/lib/asn/asn1c/S1ap-PagingPriority.h new file mode 100644 index 0000000000..758e314f7f --- /dev/null +++ b/lib/asn/asn1c/S1ap-PagingPriority.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-PathSwitchRequest.c b/lib/asn/asn1c/S1ap-PathSwitchRequest.c new file mode 100644 index 0000000000..82baa2caff --- /dev/null +++ b/lib/asn/asn1c/S1ap-PathSwitchRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PathSwitchRequest.h" + +static int +memb_s1ap_PathSwitchRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_PathSwitchRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_PathSwitchRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_PathSwitchRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_PathSwitchRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_PathSwitchRequest_ies_specs_2 = { + sizeof(struct S1ap_PathSwitchRequest__s1ap_PathSwitchRequest_ies), + offsetof(struct S1ap_PathSwitchRequest__s1ap_PathSwitchRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_PathSwitchRequest_ies_2 = { + "s1ap-PathSwitchRequest-ies", + "s1ap-PathSwitchRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_PathSwitchRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_PathSwitchRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_PathSwitchRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_PathSwitchRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_PathSwitchRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_PathSwitchRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_PathSwitchRequest_ies_constr_2, + asn_MBR_s1ap_PathSwitchRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_PathSwitchRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_PathSwitchRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_PathSwitchRequest, s1ap_PathSwitchRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_PathSwitchRequest_ies_2, + memb_s1ap_PathSwitchRequest_ies_constraint_1, + &asn_PER_memb_s1ap_PathSwitchRequest_ies_constr_2, + 0, + "s1ap-PathSwitchRequest-ies" + }, +}; +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 } /* s1ap-PathSwitchRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_PathSwitchRequest = { + "S1ap-PathSwitchRequest", + "S1ap-PathSwitchRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_PathSwitchRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_PathSwitchRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PathSwitchRequest.h b/lib/asn/asn1c/S1ap-PathSwitchRequest.h new file mode 100644 index 0000000000..c3727c4ead --- /dev/null +++ b/lib/asn/asn1c/S1ap-PathSwitchRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_PathSwitchRequest_H_ +#define _S1ap_PathSwitchRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-PathSwitchRequest */ +typedef struct S1ap_PathSwitchRequest { + struct S1ap_PathSwitchRequest__s1ap_PathSwitchRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_PathSwitchRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_PathSwitchRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-PathSwitchRequestAcknowledge.c b/lib/asn/asn1c/S1ap-PathSwitchRequestAcknowledge.c new file mode 100644 index 0000000000..18ba9483d3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PathSwitchRequestAcknowledge.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PathSwitchRequestAcknowledge.h" + +static int +memb_s1ap_PathSwitchRequestAcknowledge_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_PathSwitchRequestAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_PathSwitchRequestAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_PathSwitchRequestAcknowledge_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_PathSwitchRequestAcknowledge_ies_specs_2 = { + sizeof(struct S1ap_PathSwitchRequestAcknowledge__s1ap_PathSwitchRequestAcknowledge_ies), + offsetof(struct S1ap_PathSwitchRequestAcknowledge__s1ap_PathSwitchRequestAcknowledge_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_2 = { + "s1ap-PathSwitchRequestAcknowledge-ies", + "s1ap-PathSwitchRequestAcknowledge-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_tags_2, + sizeof(asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_PathSwitchRequestAcknowledge_ies_constr_2, + asn_MBR_s1ap_PathSwitchRequestAcknowledge_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_PathSwitchRequestAcknowledge_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_PathSwitchRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_PathSwitchRequestAcknowledge, s1ap_PathSwitchRequestAcknowledge_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_PathSwitchRequestAcknowledge_ies_2, + memb_s1ap_PathSwitchRequestAcknowledge_ies_constraint_1, + &asn_PER_memb_s1ap_PathSwitchRequestAcknowledge_ies_constr_2, + 0, + "s1ap-PathSwitchRequestAcknowledge-ies" + }, +}; +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 } /* s1ap-PathSwitchRequestAcknowledge-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_PathSwitchRequestAcknowledge = { + "S1ap-PathSwitchRequestAcknowledge", + "S1ap-PathSwitchRequestAcknowledge", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_PathSwitchRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1ap_PathSwitchRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PathSwitchRequestAcknowledge.h b/lib/asn/asn1c/S1ap-PathSwitchRequestAcknowledge.h new file mode 100644 index 0000000000..61b2258349 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PathSwitchRequestAcknowledge.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_PathSwitchRequestAcknowledge_H_ +#define _S1ap_PathSwitchRequestAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-PathSwitchRequestAcknowledge */ +typedef struct S1ap_PathSwitchRequestAcknowledge { + struct S1ap_PathSwitchRequestAcknowledge__s1ap_PathSwitchRequestAcknowledge_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_PathSwitchRequestAcknowledge_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_PathSwitchRequestAcknowledge_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-PathSwitchRequestFailure.c b/lib/asn/asn1c/S1ap-PathSwitchRequestFailure.c new file mode 100644 index 0000000000..82ca8f76c1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PathSwitchRequestFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PathSwitchRequestFailure.h" + +static int +memb_s1ap_PathSwitchRequestFailure_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_PathSwitchRequestFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_PathSwitchRequestFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_PathSwitchRequestFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_PathSwitchRequestFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_PathSwitchRequestFailure_ies_specs_2 = { + sizeof(struct S1ap_PathSwitchRequestFailure__s1ap_PathSwitchRequestFailure_ies), + offsetof(struct S1ap_PathSwitchRequestFailure__s1ap_PathSwitchRequestFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_PathSwitchRequestFailure_ies_2 = { + "s1ap-PathSwitchRequestFailure-ies", + "s1ap-PathSwitchRequestFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_PathSwitchRequestFailure_ies_tags_2, + sizeof(asn_DEF_s1ap_PathSwitchRequestFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_PathSwitchRequestFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_PathSwitchRequestFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_PathSwitchRequestFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_PathSwitchRequestFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_PathSwitchRequestFailure_ies_constr_2, + asn_MBR_s1ap_PathSwitchRequestFailure_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_PathSwitchRequestFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_PathSwitchRequestFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_PathSwitchRequestFailure, s1ap_PathSwitchRequestFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_PathSwitchRequestFailure_ies_2, + memb_s1ap_PathSwitchRequestFailure_ies_constraint_1, + &asn_PER_memb_s1ap_PathSwitchRequestFailure_ies_constr_2, + 0, + "s1ap-PathSwitchRequestFailure-ies" + }, +}; +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 } /* s1ap-PathSwitchRequestFailure-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_PathSwitchRequestFailure = { + "S1ap-PathSwitchRequestFailure", + "S1ap-PathSwitchRequestFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_PathSwitchRequestFailure_1, + 1, /* Elements count */ + &asn_SPC_S1ap_PathSwitchRequestFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PathSwitchRequestFailure.h b/lib/asn/asn1c/S1ap-PathSwitchRequestFailure.h new file mode 100644 index 0000000000..4689f5711b --- /dev/null +++ b/lib/asn/asn1c/S1ap-PathSwitchRequestFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_PathSwitchRequestFailure_H_ +#define _S1ap_PathSwitchRequestFailure_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-PathSwitchRequestFailure */ +typedef struct S1ap_PathSwitchRequestFailure { + struct S1ap_PathSwitchRequestFailure__s1ap_PathSwitchRequestFailure_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_PathSwitchRequestFailure_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_PathSwitchRequestFailure_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-PeriodicReportingMDT.c b/lib/asn/asn1c/S1ap-PeriodicReportingMDT.c new file mode 100644 index 0000000000..ebfda5de2f --- /dev/null +++ b/lib/asn/asn1c/S1ap-PeriodicReportingMDT.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PeriodicReportingMDT.h" + +static asn_TYPE_member_t asn_MBR_S1ap_PeriodicReportingMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_PeriodicReportingMDT, reportInterval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ReportIntervalMDT, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "reportInterval" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_PeriodicReportingMDT, reportAmount), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ReportAmountMDT, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "reportAmount" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_PeriodicReportingMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P48, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_S1ap_PeriodicReportingMDT_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1ap_PeriodicReportingMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1ap_PeriodicReportingMDT_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 */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1ap_PeriodicReportingMDT_specs_1 = { + sizeof(struct S1ap_PeriodicReportingMDT), + offsetof(struct S1ap_PeriodicReportingMDT, _asn_ctx), + asn_MAP_S1ap_PeriodicReportingMDT_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1ap_PeriodicReportingMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_PeriodicReportingMDT = { + "S1ap-PeriodicReportingMDT", + "S1ap-PeriodicReportingMDT", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_PeriodicReportingMDT_tags_1, + sizeof(asn_DEF_S1ap_PeriodicReportingMDT_tags_1) + /sizeof(asn_DEF_S1ap_PeriodicReportingMDT_tags_1[0]), /* 1 */ + asn_DEF_S1ap_PeriodicReportingMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_PeriodicReportingMDT_tags_1) + /sizeof(asn_DEF_S1ap_PeriodicReportingMDT_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_S1ap_PeriodicReportingMDT_1, + 3, /* Elements count */ + &asn_SPC_S1ap_PeriodicReportingMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PeriodicReportingMDT.h b/lib/asn/asn1c/S1ap-PeriodicReportingMDT.h new file mode 100644 index 0000000000..e978d5e149 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PeriodicReportingMDT.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_PeriodicReportingMDT_H_ +#define _S1ap_PeriodicReportingMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ReportIntervalMDT.h" +#include "S1ap-ReportAmountMDT.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* S1ap-PeriodicReportingMDT */ +typedef struct S1ap_PeriodicReportingMDT { + S1ap_ReportIntervalMDT_t reportInterval; + S1ap_ReportAmountMDT_t reportAmount; + struct 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_PeriodicReportingMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_PeriodicReportingMDT; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_PeriodicReportingMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Pre-emptionCapability.c b/lib/asn/asn1c/S1ap-Pre-emptionCapability.c new file mode 100644 index 0000000000..584047c1e2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Pre-emptionCapability.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Pre-emptionCapability.h" + +int +S1ap_Pre_emptionCapability_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Pre_emptionCapability_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Pre_emptionCapability_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Pre_emptionCapability_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Pre_emptionCapability_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Pre_emptionCapability_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Pre_emptionCapability_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Pre_emptionCapability_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Pre_emptionCapability_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Pre_emptionCapability_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Pre_emptionCapability_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Pre_emptionCapability_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Pre_emptionCapability_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (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) */ +}; +static 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 = { + "S1ap-Pre-emptionCapability", + "S1ap-Pre-emptionCapability", + S1ap_Pre_emptionCapability_free, + S1ap_Pre_emptionCapability_print, + S1ap_Pre_emptionCapability_constraint, + S1ap_Pre_emptionCapability_decode_ber, + S1ap_Pre_emptionCapability_encode_der, + S1ap_Pre_emptionCapability_decode_xer, + S1ap_Pre_emptionCapability_encode_xer, + S1ap_Pre_emptionCapability_decode_uper, + S1ap_Pre_emptionCapability_encode_uper, + S1ap_Pre_emptionCapability_decode_aper, + S1ap_Pre_emptionCapability_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Pre_emptionCapability_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Pre_emptionCapability_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Pre-emptionCapability.h b/lib/asn/asn1c/S1ap-Pre-emptionCapability.h new file mode 100644 index 0000000000..481f9f06f8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Pre-emptionCapability.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_Pre_emptionCapability; +asn_struct_free_f S1ap_Pre_emptionCapability_free; +asn_struct_print_f S1ap_Pre_emptionCapability_print; +asn_constr_check_f S1ap_Pre_emptionCapability_constraint; +ber_type_decoder_f S1ap_Pre_emptionCapability_decode_ber; +der_type_encoder_f S1ap_Pre_emptionCapability_encode_der; +xer_type_decoder_f S1ap_Pre_emptionCapability_decode_xer; +xer_type_encoder_f S1ap_Pre_emptionCapability_encode_xer; +per_type_decoder_f S1ap_Pre_emptionCapability_decode_uper; +per_type_encoder_f S1ap_Pre_emptionCapability_encode_uper; +per_type_decoder_f S1ap_Pre_emptionCapability_decode_aper; +per_type_encoder_f S1ap_Pre_emptionCapability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_Pre_emptionCapability_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Pre-emptionVulnerability.c b/lib/asn/asn1c/S1ap-Pre-emptionVulnerability.c new file mode 100644 index 0000000000..5082ecd3f0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Pre-emptionVulnerability.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Pre-emptionVulnerability.h" + +int +S1ap_Pre_emptionVulnerability_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Pre_emptionVulnerability_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Pre_emptionVulnerability_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Pre_emptionVulnerability_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Pre_emptionVulnerability_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Pre_emptionVulnerability_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Pre_emptionVulnerability_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Pre_emptionVulnerability_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Pre_emptionVulnerability_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Pre_emptionVulnerability_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Pre_emptionVulnerability_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Pre_emptionVulnerability_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (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) */ +}; +static 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 = { + "S1ap-Pre-emptionVulnerability", + "S1ap-Pre-emptionVulnerability", + S1ap_Pre_emptionVulnerability_free, + S1ap_Pre_emptionVulnerability_print, + S1ap_Pre_emptionVulnerability_constraint, + S1ap_Pre_emptionVulnerability_decode_ber, + S1ap_Pre_emptionVulnerability_encode_der, + S1ap_Pre_emptionVulnerability_decode_xer, + S1ap_Pre_emptionVulnerability_encode_xer, + S1ap_Pre_emptionVulnerability_decode_uper, + S1ap_Pre_emptionVulnerability_encode_uper, + S1ap_Pre_emptionVulnerability_decode_aper, + S1ap_Pre_emptionVulnerability_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Pre_emptionVulnerability_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Pre_emptionVulnerability_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Pre-emptionVulnerability.h b/lib/asn/asn1c/S1ap-Pre-emptionVulnerability.h new file mode 100644 index 0000000000..639314891f --- /dev/null +++ b/lib/asn/asn1c/S1ap-Pre-emptionVulnerability.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_Pre_emptionVulnerability; +asn_struct_free_f S1ap_Pre_emptionVulnerability_free; +asn_struct_print_f S1ap_Pre_emptionVulnerability_print; +asn_constr_check_f S1ap_Pre_emptionVulnerability_constraint; +ber_type_decoder_f S1ap_Pre_emptionVulnerability_decode_ber; +der_type_encoder_f S1ap_Pre_emptionVulnerability_encode_der; +xer_type_decoder_f S1ap_Pre_emptionVulnerability_decode_xer; +xer_type_encoder_f S1ap_Pre_emptionVulnerability_encode_xer; +per_type_decoder_f S1ap_Pre_emptionVulnerability_decode_uper; +per_type_encoder_f S1ap_Pre_emptionVulnerability_encode_uper; +per_type_decoder_f S1ap_Pre_emptionVulnerability_decode_aper; +per_type_encoder_f S1ap_Pre_emptionVulnerability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_Pre_emptionVulnerability_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Presence.c b/lib/asn/asn1c/S1ap-Presence.c new file mode 100644 index 0000000000..53972e2931 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Presence.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Presence.h" + +int +S1ap_Presence_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Presence_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_Presence_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Presence_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Presence_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Presence_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Presence_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Presence_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Presence_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Presence_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Presence_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Presence_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Presence_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Presence_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (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) */ +}; +static 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 = { + "S1ap-Presence", + "S1ap-Presence", + S1ap_Presence_free, + S1ap_Presence_print, + S1ap_Presence_constraint, + S1ap_Presence_decode_ber, + S1ap_Presence_encode_der, + S1ap_Presence_decode_xer, + S1ap_Presence_encode_xer, + S1ap_Presence_decode_uper, + S1ap_Presence_encode_uper, + S1ap_Presence_decode_aper, + S1ap_Presence_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Presence_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_Presence_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Presence.h b/lib/asn/asn1c/S1ap-Presence.h new file mode 100644 index 0000000000..f3b87f4edc --- /dev/null +++ b/lib/asn/asn1c/S1ap-Presence.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_Presence; +asn_struct_free_f S1ap_Presence_free; +asn_struct_print_f S1ap_Presence_print; +asn_constr_check_f S1ap_Presence_constraint; +ber_type_decoder_f S1ap_Presence_decode_ber; +der_type_encoder_f S1ap_Presence_encode_der; +xer_type_decoder_f S1ap_Presence_decode_xer; +xer_type_encoder_f S1ap_Presence_encode_xer; +per_type_decoder_f S1ap_Presence_decode_uper; +per_type_encoder_f S1ap_Presence_encode_uper; +per_type_decoder_f S1ap_Presence_decode_aper; +per_type_encoder_f S1ap_Presence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_Presence_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-PriorityLevel.c b/lib/asn/asn1c/S1ap-PriorityLevel.c new file mode 100644 index 0000000000..f7130ac49b --- /dev/null +++ b/lib/asn/asn1c/S1ap-PriorityLevel.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PriorityLevel.h" + +int +S1ap_PriorityLevel_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 15LL)) { + /* 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 void +S1ap_PriorityLevel_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_PriorityLevel_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_PriorityLevel_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_PriorityLevel_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_PriorityLevel_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_PriorityLevel_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_PriorityLevel_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_PriorityLevel_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_PriorityLevel_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_PriorityLevel_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_PriorityLevel_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PriorityLevel_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_PriorityLevel_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0l, 15l } /* (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 = { + "S1ap-PriorityLevel", + "S1ap-PriorityLevel", + S1ap_PriorityLevel_free, + S1ap_PriorityLevel_print, + S1ap_PriorityLevel_constraint, + S1ap_PriorityLevel_decode_ber, + S1ap_PriorityLevel_encode_der, + S1ap_PriorityLevel_decode_xer, + S1ap_PriorityLevel_encode_xer, + S1ap_PriorityLevel_decode_uper, + S1ap_PriorityLevel_encode_uper, + S1ap_PriorityLevel_decode_aper, + S1ap_PriorityLevel_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_PriorityLevel_constr_1, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-PriorityLevel.h b/lib/asn/asn1c/S1ap-PriorityLevel.h new file mode 100644 index 0000000000..2e632b5af3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PriorityLevel.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-PrivacyIndicator.c b/lib/asn/asn1c/S1ap-PrivacyIndicator.c new file mode 100644 index 0000000000..809c08dd2c --- /dev/null +++ b/lib/asn/asn1c/S1ap-PrivacyIndicator.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PrivacyIndicator.h" + +int +S1ap_PrivacyIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_PrivacyIndicator_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_PrivacyIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_PrivacyIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_PrivacyIndicator_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_PrivacyIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_PrivacyIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_PrivacyIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_PrivacyIndicator_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_PrivacyIndicator_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_PrivacyIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_PrivacyIndicator_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_PrivacyIndicator_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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 = { + "S1ap-PrivacyIndicator", + "S1ap-PrivacyIndicator", + S1ap_PrivacyIndicator_free, + S1ap_PrivacyIndicator_print, + S1ap_PrivacyIndicator_constraint, + S1ap_PrivacyIndicator_decode_ber, + S1ap_PrivacyIndicator_encode_der, + S1ap_PrivacyIndicator_decode_xer, + S1ap_PrivacyIndicator_encode_xer, + S1ap_PrivacyIndicator_decode_uper, + S1ap_PrivacyIndicator_encode_uper, + S1ap_PrivacyIndicator_decode_aper, + S1ap_PrivacyIndicator_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_PrivacyIndicator_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_PrivacyIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PrivacyIndicator.h b/lib/asn/asn1c/S1ap-PrivacyIndicator.h new file mode 100644 index 0000000000..07767262c6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PrivacyIndicator.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-PrivateIE-ID.c b/lib/asn/asn1c/S1ap-PrivateIE-ID.c new file mode 100644 index 0000000000..5bdc8c337f --- /dev/null +++ b/lib/asn/asn1c/S1ap-PrivateIE-ID.c @@ -0,0 +1,103 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PrivateIE-ID.h" + +static int +memb_local_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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_per_constraints_t asn_PER_memb_local_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_S1ap_PrivateIE_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static 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, + memb_local_constraint_1, + &asn_PER_memb_local_constr_2, + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_PrivateIE_ID = { + "S1ap-PrivateIE-ID", + "S1ap-PrivateIE-ID", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_PrivateIE_ID_constr_1, + asn_MBR_S1ap_PrivateIE_ID_1, + 2, /* Elements count */ + &asn_SPC_S1ap_PrivateIE_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PrivateIE-ID.h b/lib/asn/asn1c/S1ap-PrivateIE-ID.h new file mode 100644 index 0000000000..0a22497805 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PrivateIE-ID.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 { + S1ap_PrivateIE_ID_PR_NOTHING, /* No components present */ + S1ap_PrivateIE_ID_PR_local, + S1ap_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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_PrivateIE_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-PrivateMessage.c b/lib/asn/asn1c/S1ap-PrivateMessage.c new file mode 100644 index 0000000000..09651efc55 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PrivateMessage.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-PrivateMessage.h" + +static 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_PrivateIE_Container_5768P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_PrivateMessage = { + "S1ap-PrivateMessage", + "S1ap-PrivateMessage", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_PrivateMessage_1, + 1, /* Elements count */ + &asn_SPC_S1ap_PrivateMessage_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-PrivateMessage.h b/lib/asn/asn1c/S1ap-PrivateMessage.h new file mode 100644 index 0000000000..510dd595f9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-PrivateMessage.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_PrivateMessage_H_ +#define _S1ap_PrivateMessage_H_ + + +#include + +/* Including external dependencies */ +#include "PrivateIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-PrivateMessage */ +typedef struct S1ap_PrivateMessage { + PrivateIE_Container_5768P0_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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_PrivateMessage_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ProcedureCode.c b/lib/asn/asn1c/S1ap-ProcedureCode.c new file mode 100644 index 0000000000..cec81564ba --- /dev/null +++ b/lib/asn/asn1c/S1ap-ProcedureCode.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ProcedureCode.h" + +int +S1ap_ProcedureCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 255LL)) { + /* 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 void +S1ap_ProcedureCode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_ProcedureCode_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ProcedureCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProcedureCode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ProcedureCode_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProcedureCode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ProcedureCode_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProcedureCode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ProcedureCode_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ProcedureCode_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ProcedureCode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ProcedureCode_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ProcedureCode_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (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 = { + "S1ap-ProcedureCode", + "S1ap-ProcedureCode", + S1ap_ProcedureCode_free, + S1ap_ProcedureCode_print, + S1ap_ProcedureCode_constraint, + S1ap_ProcedureCode_decode_ber, + S1ap_ProcedureCode_encode_der, + S1ap_ProcedureCode_decode_xer, + S1ap_ProcedureCode_encode_xer, + S1ap_ProcedureCode_decode_uper, + S1ap_ProcedureCode_encode_uper, + S1ap_ProcedureCode_decode_aper, + S1ap_ProcedureCode_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ProcedureCode_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-ProcedureCode.h b/lib/asn/asn1c/S1ap-ProcedureCode.h new file mode 100644 index 0000000000..7696997c0c --- /dev/null +++ b/lib/asn/asn1c/S1ap-ProcedureCode.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ProcedureCode_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ProtocolExtensionID.c b/lib/asn/asn1c/S1ap-ProtocolExtensionID.c new file mode 100644 index 0000000000..5791589a62 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ProtocolExtensionID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ProtocolExtensionID.h" + +int +S1ap_ProtocolExtensionID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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 void +S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_ProtocolExtensionID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ProtocolExtensionID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProtocolExtensionID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ProtocolExtensionID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProtocolExtensionID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ProtocolExtensionID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProtocolExtensionID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ProtocolExtensionID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ProtocolExtensionID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ProtocolExtensionID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ProtocolExtensionID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ProtocolExtensionID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (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 = { + "S1ap-ProtocolExtensionID", + "S1ap-ProtocolExtensionID", + S1ap_ProtocolExtensionID_free, + S1ap_ProtocolExtensionID_print, + S1ap_ProtocolExtensionID_constraint, + S1ap_ProtocolExtensionID_decode_ber, + S1ap_ProtocolExtensionID_encode_der, + S1ap_ProtocolExtensionID_decode_xer, + S1ap_ProtocolExtensionID_encode_xer, + S1ap_ProtocolExtensionID_decode_uper, + S1ap_ProtocolExtensionID_encode_uper, + S1ap_ProtocolExtensionID_decode_aper, + S1ap_ProtocolExtensionID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ProtocolExtensionID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-ProtocolExtensionID.h b/lib/asn/asn1c/S1ap-ProtocolExtensionID.h new file mode 100644 index 0000000000..8e76b9838b --- /dev/null +++ b/lib/asn/asn1c/S1ap-ProtocolExtensionID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-ProtocolIE-ID.c b/lib/asn/asn1c/S1ap-ProtocolIE-ID.c new file mode 100644 index 0000000000..8fa2ca2947 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ProtocolIE-ID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ProtocolIE-ID.h" + +int +S1ap_ProtocolIE_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 65535LL)) { + /* 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 void +S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_ProtocolIE_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ProtocolIE_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProtocolIE_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ProtocolIE_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProtocolIE_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ProtocolIE_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ProtocolIE_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ProtocolIE_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ProtocolIE_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ProtocolIE_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ProtocolIE_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ProtocolIE_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (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 = { + "S1ap-ProtocolIE-ID", + "S1ap-ProtocolIE-ID", + S1ap_ProtocolIE_ID_free, + S1ap_ProtocolIE_ID_print, + S1ap_ProtocolIE_ID_constraint, + S1ap_ProtocolIE_ID_decode_ber, + S1ap_ProtocolIE_ID_encode_der, + S1ap_ProtocolIE_ID_decode_xer, + S1ap_ProtocolIE_ID_encode_xer, + S1ap_ProtocolIE_ID_decode_uper, + S1ap_ProtocolIE_ID_encode_uper, + S1ap_ProtocolIE_ID_decode_aper, + S1ap_ProtocolIE_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ProtocolIE_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-ProtocolIE-ID.h b/lib/asn/asn1c/S1ap-ProtocolIE-ID.h new file mode 100644 index 0000000000..f02fc185d7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ProtocolIE-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ProtocolIE_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-QCI.c b/lib/asn/asn1c/S1ap-QCI.c new file mode 100644 index 0000000000..778db67957 --- /dev/null +++ b/lib/asn/asn1c/S1ap-QCI.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-QCI.h" + +int +S1ap_QCI_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 255LL)) { + /* 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 void +S1ap_QCI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_QCI_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_QCI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_QCI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_QCI_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_QCI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_QCI_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_QCI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_QCI_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_QCI_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_QCI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_QCI_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_QCI_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (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 = { + "S1ap-QCI", + "S1ap-QCI", + S1ap_QCI_free, + S1ap_QCI_print, + S1ap_QCI_constraint, + S1ap_QCI_decode_ber, + S1ap_QCI_encode_der, + S1ap_QCI_decode_xer, + S1ap_QCI_encode_xer, + S1ap_QCI_decode_uper, + S1ap_QCI_encode_uper, + S1ap_QCI_decode_aper, + S1ap_QCI_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_QCI_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-QCI.h b/lib/asn/asn1c/S1ap-QCI.h new file mode 100644 index 0000000000..c278b0480f --- /dev/null +++ b/lib/asn/asn1c/S1ap-QCI.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-RAC.c b/lib/asn/asn1c/S1ap-RAC.c new file mode 100644 index 0000000000..8a1ee2d649 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RAC.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RAC.h" + +int +S1ap_RAC_constraint(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 == 1LL)) { + /* 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 void +S1ap_RAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_RAC_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_RAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_RAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_RAC_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_RAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_RAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_RAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_RAC_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_RAC_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_RAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RAC_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_RAC_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (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 = { + "S1ap-RAC", + "S1ap-RAC", + S1ap_RAC_free, + S1ap_RAC_print, + S1ap_RAC_constraint, + S1ap_RAC_decode_ber, + S1ap_RAC_encode_der, + S1ap_RAC_decode_xer, + S1ap_RAC_encode_xer, + S1ap_RAC_decode_uper, + S1ap_RAC_encode_uper, + S1ap_RAC_decode_aper, + S1ap_RAC_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_RAC_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-RAC.h b/lib/asn/asn1c/S1ap-RAC.h new file mode 100644 index 0000000000..f598894264 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RAC.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-RIMInformation.c b/lib/asn/asn1c/S1ap-RIMInformation.c new file mode 100644 index 0000000000..718182334b --- /dev/null +++ b/lib/asn/asn1c/S1ap-RIMInformation.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RIMInformation.h" + +int +S1ap_RIMInformation_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_RIMInformation_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_RIMInformation_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_RIMInformation_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_RIMInformation_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_RIMInformation_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_RIMInformation_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_RIMInformation_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_RIMInformation_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_RIMInformation_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_RIMInformation_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_RIMInformation_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RIMInformation_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-RIMInformation", + "S1ap-RIMInformation", + S1ap_RIMInformation_free, + S1ap_RIMInformation_print, + S1ap_RIMInformation_constraint, + S1ap_RIMInformation_decode_ber, + S1ap_RIMInformation_encode_der, + S1ap_RIMInformation_decode_xer, + S1ap_RIMInformation_encode_xer, + S1ap_RIMInformation_decode_uper, + S1ap_RIMInformation_encode_uper, + S1ap_RIMInformation_decode_aper, + S1ap_RIMInformation_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-RIMInformation.h b/lib/asn/asn1c/S1ap-RIMInformation.h new file mode 100644 index 0000000000..7f1acaeecd --- /dev/null +++ b/lib/asn/asn1c/S1ap-RIMInformation.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-RIMRoutingAddress.c b/lib/asn/asn1c/S1ap-RIMRoutingAddress.c new file mode 100644 index 0000000000..7127a5aee0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RIMRoutingAddress.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RIMRoutingAddress.h" + +static asn_per_constraints_t asn_PER_type_S1ap_RIMRoutingAddress_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1ap_RIMRoutingAddress_1[] = { + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "gERAN-Cell-ID" + }, + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "targetRNC-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 */ +}; +static 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, + 2, /* Count of tags in the map */ + 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_RIMRoutingAddress = { + "S1ap-RIMRoutingAddress", + "S1ap-RIMRoutingAddress", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_RIMRoutingAddress_constr_1, + asn_MBR_S1ap_RIMRoutingAddress_1, + 2, /* Elements count */ + &asn_SPC_S1ap_RIMRoutingAddress_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-RIMRoutingAddress.h b/lib/asn/asn1c/S1ap-RIMRoutingAddress.h new file mode 100644 index 0000000000..35512fcfa4 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RIMRoutingAddress.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_RIMRoutingAddress_H_ +#define _S1ap_RIMRoutingAddress_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-GERAN-Cell-ID.h" +#include "S1ap-TargetRNC-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_RIMRoutingAddress_PR { + S1ap_RIMRoutingAddress_PR_NOTHING, /* No components present */ + S1ap_RIMRoutingAddress_PR_gERAN_Cell_ID, + /* Extensions may appear below */ + S1ap_RIMRoutingAddress_PR_targetRNC_ID +} S1ap_RIMRoutingAddress_PR; + +/* S1ap-RIMRoutingAddress */ +typedef struct S1ap_RIMRoutingAddress { + S1ap_RIMRoutingAddress_PR present; + union S1ap_RIMRoutingAddress_u { + S1ap_GERAN_Cell_ID_t gERAN_Cell_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + S1ap_TargetRNC_ID_t targetRNC_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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_RIMRoutingAddress_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-RIMTransfer.c b/lib/asn/asn1c/S1ap-RIMTransfer.c new file mode 100644 index 0000000000..2dd1caab18 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RIMTransfer.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RIMTransfer.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "rIMRoutingAddress" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_RIMTransfer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P50, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_RIMTransfer = { + "S1ap-RIMTransfer", + "S1ap-RIMTransfer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_RIMTransfer_1, + 3, /* Elements count */ + &asn_SPC_S1ap_RIMTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-RIMTransfer.h b/lib/asn/asn1c/S1ap-RIMTransfer.h new file mode 100644 index 0000000000..5bcd54760c --- /dev/null +++ b/lib/asn/asn1c/S1ap-RIMTransfer.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-RIMTransfer */ +typedef struct S1ap_RIMTransfer { + S1ap_RIMInformation_t rIMInformation; + struct S1ap_RIMRoutingAddress *rIMRoutingAddress /* OPTIONAL */; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-RIMRoutingAddress.h" +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_RIMTransfer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-RNC-ID.c b/lib/asn/asn1c/S1ap-RNC-ID.c new file mode 100644 index 0000000000..9050589bef --- /dev/null +++ b/lib/asn/asn1c/S1ap-RNC-ID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RNC-ID.h" + +int +S1ap_RNC_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 4095LL)) { + /* 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 void +S1ap_RNC_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_RNC_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_RNC_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_RNC_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_RNC_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_RNC_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_RNC_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_RNC_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_RNC_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_RNC_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_RNC_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RNC_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_RNC_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0l, 4095l } /* (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 = { + "S1ap-RNC-ID", + "S1ap-RNC-ID", + S1ap_RNC_ID_free, + S1ap_RNC_ID_print, + S1ap_RNC_ID_constraint, + S1ap_RNC_ID_decode_ber, + S1ap_RNC_ID_encode_der, + S1ap_RNC_ID_decode_xer, + S1ap_RNC_ID_encode_xer, + S1ap_RNC_ID_decode_uper, + S1ap_RNC_ID_encode_uper, + S1ap_RNC_ID_decode_aper, + S1ap_RNC_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_RNC_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-RNC-ID.h b/lib/asn/asn1c/S1ap-RNC-ID.h new file mode 100644 index 0000000000..9cc2eb6d9b --- /dev/null +++ b/lib/asn/asn1c/S1ap-RNC-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-RRC-Container.c b/lib/asn/asn1c/S1ap-RRC-Container.c new file mode 100644 index 0000000000..c7f0b87fc2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RRC-Container.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RRC-Container.h" + +int +S1ap_RRC_Container_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_RRC_Container_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_RRC_Container_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_RRC_Container_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_RRC_Container_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_RRC_Container_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_RRC_Container_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_RRC_Container_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_RRC_Container_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_RRC_Container_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_RRC_Container_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_RRC_Container_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RRC_Container_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-RRC-Container", + "S1ap-RRC-Container", + S1ap_RRC_Container_free, + S1ap_RRC_Container_print, + S1ap_RRC_Container_constraint, + S1ap_RRC_Container_decode_ber, + S1ap_RRC_Container_encode_der, + S1ap_RRC_Container_decode_xer, + S1ap_RRC_Container_encode_xer, + S1ap_RRC_Container_decode_uper, + S1ap_RRC_Container_encode_uper, + S1ap_RRC_Container_decode_aper, + S1ap_RRC_Container_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-RRC-Container.h b/lib/asn/asn1c/S1ap-RRC-Container.h new file mode 100644 index 0000000000..e0a3ee1112 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RRC-Container.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-RRC-Establishment-Cause.c b/lib/asn/asn1c/S1ap-RRC-Establishment-Cause.c new file mode 100644 index 0000000000..fa27fa1d1b --- /dev/null +++ b/lib/asn/asn1c/S1ap-RRC-Establishment-Cause.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RRC-Establishment-Cause.h" + +int +S1ap_RRC_Establishment_Cause_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_RRC_Establishment_Cause_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_RRC_Establishment_Cause_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_RRC_Establishment_Cause_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_RRC_Establishment_Cause_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_RRC_Establishment_Cause_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_RRC_Establishment_Cause_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_RRC_Establishment_Cause_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_RRC_Establishment_Cause_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_RRC_Establishment_Cause_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_RRC_Establishment_Cause_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RRC_Establishment_Cause_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_RRC_Establishment_Cause_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 4l } /* (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" } + /* 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) */ + 3, /* mo-Signalling(3) */ + 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 */ + 6, /* 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 = { + "S1ap-RRC-Establishment-Cause", + "S1ap-RRC-Establishment-Cause", + S1ap_RRC_Establishment_Cause_free, + S1ap_RRC_Establishment_Cause_print, + S1ap_RRC_Establishment_Cause_constraint, + S1ap_RRC_Establishment_Cause_decode_ber, + S1ap_RRC_Establishment_Cause_encode_der, + S1ap_RRC_Establishment_Cause_decode_xer, + S1ap_RRC_Establishment_Cause_encode_xer, + S1ap_RRC_Establishment_Cause_decode_uper, + S1ap_RRC_Establishment_Cause_encode_uper, + S1ap_RRC_Establishment_Cause_decode_aper, + S1ap_RRC_Establishment_Cause_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_RRC_Establishment_Cause_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_RRC_Establishment_Cause_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-RRC-Establishment-Cause.h b/lib/asn/asn1c/S1ap-RRC-Establishment-Cause.h new file mode 100644 index 0000000000..026038c548 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RRC-Establishment-Cause.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 +} 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; +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/asn/asn1c/S1ap-ReceiveStatusofULPDCPSDUs.c b/lib/asn/asn1c/S1ap-ReceiveStatusofULPDCPSDUs.c new file mode 100644 index 0000000000..e5252a6669 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReceiveStatusofULPDCPSDUs.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ReceiveStatusofULPDCPSDUs.h" + +int +S1ap_ReceiveStatusofULPDCPSDUs_constraint(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 == 4096LL)) { + /* 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 void +S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_ReceiveStatusofULPDCPSDUs_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ReceiveStatusofULPDCPSDUs_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReceiveStatusofULPDCPSDUs_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ReceiveStatusofULPDCPSDUs_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReceiveStatusofULPDCPSDUs_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ReceiveStatusofULPDCPSDUs_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReceiveStatusofULPDCPSDUs_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ReceiveStatusofULPDCPSDUs_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ReceiveStatusofULPDCPSDUs_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ReceiveStatusofULPDCPSDUs_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReceiveStatusofULPDCPSDUs_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ReceiveStatusofULPDCPSDUs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4096l, 4096l } /* (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 = { + "S1ap-ReceiveStatusofULPDCPSDUs", + "S1ap-ReceiveStatusofULPDCPSDUs", + S1ap_ReceiveStatusofULPDCPSDUs_free, + S1ap_ReceiveStatusofULPDCPSDUs_print, + S1ap_ReceiveStatusofULPDCPSDUs_constraint, + S1ap_ReceiveStatusofULPDCPSDUs_decode_ber, + S1ap_ReceiveStatusofULPDCPSDUs_encode_der, + S1ap_ReceiveStatusofULPDCPSDUs_decode_xer, + S1ap_ReceiveStatusofULPDCPSDUs_encode_xer, + S1ap_ReceiveStatusofULPDCPSDUs_decode_uper, + S1ap_ReceiveStatusofULPDCPSDUs_encode_uper, + S1ap_ReceiveStatusofULPDCPSDUs_decode_aper, + S1ap_ReceiveStatusofULPDCPSDUs_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ReceiveStatusofULPDCPSDUs_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-ReceiveStatusofULPDCPSDUs.h b/lib/asn/asn1c/S1ap-ReceiveStatusofULPDCPSDUs.h new file mode 100644 index 0000000000..15c3d46f54 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReceiveStatusofULPDCPSDUs.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-RelativeMMECapacity.c b/lib/asn/asn1c/S1ap-RelativeMMECapacity.c new file mode 100644 index 0000000000..c90ebb61ac --- /dev/null +++ b/lib/asn/asn1c/S1ap-RelativeMMECapacity.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RelativeMMECapacity.h" + +int +S1ap_RelativeMMECapacity_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 255LL)) { + /* 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 void +S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_RelativeMMECapacity_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_RelativeMMECapacity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_RelativeMMECapacity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_RelativeMMECapacity_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_RelativeMMECapacity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_RelativeMMECapacity_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_RelativeMMECapacity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_RelativeMMECapacity_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_RelativeMMECapacity_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_RelativeMMECapacity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RelativeMMECapacity_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_RelativeMMECapacity_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (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 = { + "S1ap-RelativeMMECapacity", + "S1ap-RelativeMMECapacity", + S1ap_RelativeMMECapacity_free, + S1ap_RelativeMMECapacity_print, + S1ap_RelativeMMECapacity_constraint, + S1ap_RelativeMMECapacity_decode_ber, + S1ap_RelativeMMECapacity_encode_der, + S1ap_RelativeMMECapacity_decode_xer, + S1ap_RelativeMMECapacity_encode_xer, + S1ap_RelativeMMECapacity_decode_uper, + S1ap_RelativeMMECapacity_encode_uper, + S1ap_RelativeMMECapacity_decode_aper, + S1ap_RelativeMMECapacity_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_RelativeMMECapacity_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-RelativeMMECapacity.h b/lib/asn/asn1c/S1ap-RelativeMMECapacity.h new file mode 100644 index 0000000000..4fec8694f6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RelativeMMECapacity.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-RelayNode-Indicator.c b/lib/asn/asn1c/S1ap-RelayNode-Indicator.c new file mode 100644 index 0000000000..3a2db1d564 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RelayNode-Indicator.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RelayNode-Indicator.h" + +int +S1ap_RelayNode_Indicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_RelayNode_Indicator_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_RelayNode_Indicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_RelayNode_Indicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_RelayNode_Indicator_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_RelayNode_Indicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_RelayNode_Indicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_RelayNode_Indicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_RelayNode_Indicator_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_RelayNode_Indicator_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_RelayNode_Indicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RelayNode_Indicator_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_RelayNode_Indicator_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-RelayNode-Indicator", + "S1ap-RelayNode-Indicator", + S1ap_RelayNode_Indicator_free, + S1ap_RelayNode_Indicator_print, + S1ap_RelayNode_Indicator_constraint, + S1ap_RelayNode_Indicator_decode_ber, + S1ap_RelayNode_Indicator_encode_der, + S1ap_RelayNode_Indicator_decode_xer, + S1ap_RelayNode_Indicator_encode_xer, + S1ap_RelayNode_Indicator_decode_uper, + S1ap_RelayNode_Indicator_encode_uper, + S1ap_RelayNode_Indicator_decode_aper, + S1ap_RelayNode_Indicator_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_RelayNode_Indicator_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_RelayNode_Indicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-RelayNode-Indicator.h b/lib/asn/asn1c/S1ap-RelayNode-Indicator.h new file mode 100644 index 0000000000..a75963d7c0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RelayNode-Indicator.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-RepetitionPeriod.c b/lib/asn/asn1c/S1ap-RepetitionPeriod.c new file mode 100644 index 0000000000..399f470e7d --- /dev/null +++ b/lib/asn/asn1c/S1ap-RepetitionPeriod.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RepetitionPeriod.h" + +int +S1ap_RepetitionPeriod_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 4095LL)) { + /* 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 void +S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_RepetitionPeriod_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_RepetitionPeriod_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_RepetitionPeriod_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_RepetitionPeriod_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_RepetitionPeriod_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_RepetitionPeriod_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_RepetitionPeriod_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_RepetitionPeriod_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_RepetitionPeriod_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_RepetitionPeriod_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_RepetitionPeriod_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_RepetitionPeriod_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0l, 4095l } /* (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 = { + "S1ap-RepetitionPeriod", + "S1ap-RepetitionPeriod", + S1ap_RepetitionPeriod_free, + S1ap_RepetitionPeriod_print, + S1ap_RepetitionPeriod_constraint, + S1ap_RepetitionPeriod_decode_ber, + S1ap_RepetitionPeriod_encode_der, + S1ap_RepetitionPeriod_decode_xer, + S1ap_RepetitionPeriod_encode_xer, + S1ap_RepetitionPeriod_decode_uper, + S1ap_RepetitionPeriod_encode_uper, + S1ap_RepetitionPeriod_decode_aper, + S1ap_RepetitionPeriod_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_RepetitionPeriod_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-RepetitionPeriod.h b/lib/asn/asn1c/S1ap-RepetitionPeriod.h new file mode 100644 index 0000000000..4935b004c4 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RepetitionPeriod.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-ReportAmountMDT.c b/lib/asn/asn1c/S1ap-ReportAmountMDT.c new file mode 100644 index 0000000000..e8504592cb --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReportAmountMDT.c @@ -0,0 +1,178 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ReportAmountMDT.h" + +int +S1ap_ReportAmountMDT_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_ReportAmountMDT_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ReportAmountMDT_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportAmountMDT_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ReportAmountMDT_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportAmountMDT_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ReportAmountMDT_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportAmountMDT_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ReportAmountMDT_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ReportAmountMDT_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ReportAmountMDT_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReportAmountMDT_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ReportAmountMDT_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0l, 7l } /* (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) */ +}; +static 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 = { + "S1ap-ReportAmountMDT", + "S1ap-ReportAmountMDT", + S1ap_ReportAmountMDT_free, + S1ap_ReportAmountMDT_print, + S1ap_ReportAmountMDT_constraint, + S1ap_ReportAmountMDT_decode_ber, + S1ap_ReportAmountMDT_encode_der, + S1ap_ReportAmountMDT_decode_xer, + S1ap_ReportAmountMDT_encode_xer, + S1ap_ReportAmountMDT_decode_uper, + S1ap_ReportAmountMDT_encode_uper, + S1ap_ReportAmountMDT_decode_aper, + S1ap_ReportAmountMDT_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ReportAmountMDT_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_ReportAmountMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ReportAmountMDT.h b/lib/asn/asn1c/S1ap-ReportAmountMDT.h new file mode 100644 index 0000000000..96b23cfe42 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReportAmountMDT.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_ReportAmountMDT; +asn_struct_free_f S1ap_ReportAmountMDT_free; +asn_struct_print_f S1ap_ReportAmountMDT_print; +asn_constr_check_f S1ap_ReportAmountMDT_constraint; +ber_type_decoder_f S1ap_ReportAmountMDT_decode_ber; +der_type_encoder_f S1ap_ReportAmountMDT_encode_der; +xer_type_decoder_f S1ap_ReportAmountMDT_decode_xer; +xer_type_encoder_f S1ap_ReportAmountMDT_encode_xer; +per_type_decoder_f S1ap_ReportAmountMDT_decode_uper; +per_type_encoder_f S1ap_ReportAmountMDT_encode_uper; +per_type_decoder_f S1ap_ReportAmountMDT_decode_aper; +per_type_encoder_f S1ap_ReportAmountMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ReportAmountMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ReportArea.c b/lib/asn/asn1c/S1ap-ReportArea.c new file mode 100644 index 0000000000..b9dc74636c --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReportArea.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ReportArea.h" + +int +S1ap_ReportArea_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_ReportArea_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_ReportArea_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ReportArea_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportArea_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ReportArea_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportArea_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ReportArea_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportArea_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ReportArea_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ReportArea_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ReportArea_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReportArea_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ReportArea_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 */ +}; +static 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 = { + "S1ap-ReportArea", + "S1ap-ReportArea", + S1ap_ReportArea_free, + S1ap_ReportArea_print, + S1ap_ReportArea_constraint, + S1ap_ReportArea_decode_ber, + S1ap_ReportArea_encode_der, + S1ap_ReportArea_decode_xer, + S1ap_ReportArea_encode_xer, + S1ap_ReportArea_decode_uper, + S1ap_ReportArea_encode_uper, + S1ap_ReportArea_decode_aper, + S1ap_ReportArea_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ReportArea_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_ReportArea_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ReportArea.h b/lib/asn/asn1c/S1ap-ReportArea.h new file mode 100644 index 0000000000..f2488167a2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReportArea.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_ReportArea; +asn_struct_free_f S1ap_ReportArea_free; +asn_struct_print_f S1ap_ReportArea_print; +asn_constr_check_f S1ap_ReportArea_constraint; +ber_type_decoder_f S1ap_ReportArea_decode_ber; +der_type_encoder_f S1ap_ReportArea_encode_der; +xer_type_decoder_f S1ap_ReportArea_decode_xer; +xer_type_encoder_f S1ap_ReportArea_encode_xer; +per_type_decoder_f S1ap_ReportArea_decode_uper; +per_type_encoder_f S1ap_ReportArea_encode_uper; +per_type_decoder_f S1ap_ReportArea_decode_aper; +per_type_encoder_f S1ap_ReportArea_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ReportArea_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ReportIntervalMDT.c b/lib/asn/asn1c/S1ap-ReportIntervalMDT.c new file mode 100644 index 0000000000..b7f4739330 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReportIntervalMDT.c @@ -0,0 +1,188 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ReportIntervalMDT.h" + +int +S1ap_ReportIntervalMDT_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_ReportIntervalMDT_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ReportIntervalMDT_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportIntervalMDT_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ReportIntervalMDT_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportIntervalMDT_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ReportIntervalMDT_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportIntervalMDT_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ReportIntervalMDT_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ReportIntervalMDT_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ReportIntervalMDT_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReportIntervalMDT_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ReportIntervalMDT_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0l, 12l } /* (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) */ +}; +static 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 = { + "S1ap-ReportIntervalMDT", + "S1ap-ReportIntervalMDT", + S1ap_ReportIntervalMDT_free, + S1ap_ReportIntervalMDT_print, + S1ap_ReportIntervalMDT_constraint, + S1ap_ReportIntervalMDT_decode_ber, + S1ap_ReportIntervalMDT_encode_der, + S1ap_ReportIntervalMDT_decode_xer, + S1ap_ReportIntervalMDT_encode_xer, + S1ap_ReportIntervalMDT_decode_uper, + S1ap_ReportIntervalMDT_encode_uper, + S1ap_ReportIntervalMDT_decode_aper, + S1ap_ReportIntervalMDT_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ReportIntervalMDT_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_ReportIntervalMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ReportIntervalMDT.h b/lib/asn/asn1c/S1ap-ReportIntervalMDT.h new file mode 100644 index 0000000000..c0b4417600 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReportIntervalMDT.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_ReportIntervalMDT; +asn_struct_free_f S1ap_ReportIntervalMDT_free; +asn_struct_print_f S1ap_ReportIntervalMDT_print; +asn_constr_check_f S1ap_ReportIntervalMDT_constraint; +ber_type_decoder_f S1ap_ReportIntervalMDT_decode_ber; +der_type_encoder_f S1ap_ReportIntervalMDT_encode_der; +xer_type_decoder_f S1ap_ReportIntervalMDT_decode_xer; +xer_type_encoder_f S1ap_ReportIntervalMDT_encode_xer; +per_type_decoder_f S1ap_ReportIntervalMDT_decode_uper; +per_type_encoder_f S1ap_ReportIntervalMDT_encode_uper; +per_type_decoder_f S1ap_ReportIntervalMDT_decode_aper; +per_type_encoder_f S1ap_ReportIntervalMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ReportIntervalMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ReportingTriggerMDT.c b/lib/asn/asn1c/S1ap-ReportingTriggerMDT.c new file mode 100644 index 0000000000..7758e24297 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReportingTriggerMDT.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ReportingTriggerMDT.h" + +int +S1ap_ReportingTriggerMDT_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_ReportingTriggerMDT_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ReportingTriggerMDT_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportingTriggerMDT_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ReportingTriggerMDT_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportingTriggerMDT_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ReportingTriggerMDT_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ReportingTriggerMDT_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ReportingTriggerMDT_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ReportingTriggerMDT_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ReportingTriggerMDT_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ReportingTriggerMDT_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ReportingTriggerMDT_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1ap_ReportingTriggerMDT_value2enum_1[] = { + { 0, 8, "periodic" }, + { 1, 16, "a2eventtriggered" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1ap_ReportingTriggerMDT_enum2value_1[] = { + 1, /* a2eventtriggered(1) */ + 0 /* periodic(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1ap_ReportingTriggerMDT_specs_1 = { + asn_MAP_S1ap_ReportingTriggerMDT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1ap_ReportingTriggerMDT_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_ReportingTriggerMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ReportingTriggerMDT = { + "S1ap-ReportingTriggerMDT", + "S1ap-ReportingTriggerMDT", + S1ap_ReportingTriggerMDT_free, + S1ap_ReportingTriggerMDT_print, + S1ap_ReportingTriggerMDT_constraint, + S1ap_ReportingTriggerMDT_decode_ber, + S1ap_ReportingTriggerMDT_encode_der, + S1ap_ReportingTriggerMDT_decode_xer, + S1ap_ReportingTriggerMDT_encode_xer, + S1ap_ReportingTriggerMDT_decode_uper, + S1ap_ReportingTriggerMDT_encode_uper, + S1ap_ReportingTriggerMDT_decode_aper, + S1ap_ReportingTriggerMDT_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_ReportingTriggerMDT_tags_1, + sizeof(asn_DEF_S1ap_ReportingTriggerMDT_tags_1) + /sizeof(asn_DEF_S1ap_ReportingTriggerMDT_tags_1[0]), /* 1 */ + asn_DEF_S1ap_ReportingTriggerMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_ReportingTriggerMDT_tags_1) + /sizeof(asn_DEF_S1ap_ReportingTriggerMDT_tags_1[0]), /* 1 */ + &asn_PER_type_S1ap_ReportingTriggerMDT_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_ReportingTriggerMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ReportingTriggerMDT.h b/lib/asn/asn1c/S1ap-ReportingTriggerMDT.h new file mode 100644 index 0000000000..fbfc6e0c0e --- /dev/null +++ b/lib/asn/asn1c/S1ap-ReportingTriggerMDT.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ReportingTriggerMDT_H_ +#define _S1ap_ReportingTriggerMDT_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_ReportingTriggerMDT { + S1ap_ReportingTriggerMDT_periodic = 0, + S1ap_ReportingTriggerMDT_a2eventtriggered = 1 + /* + * Enumeration is extensible + */ +} e_S1ap_ReportingTriggerMDT; + +/* S1ap-ReportingTriggerMDT */ +typedef long S1ap_ReportingTriggerMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_ReportingTriggerMDT; +asn_struct_free_f S1ap_ReportingTriggerMDT_free; +asn_struct_print_f S1ap_ReportingTriggerMDT_print; +asn_constr_check_f S1ap_ReportingTriggerMDT_constraint; +ber_type_decoder_f S1ap_ReportingTriggerMDT_decode_ber; +der_type_encoder_f S1ap_ReportingTriggerMDT_encode_der; +xer_type_decoder_f S1ap_ReportingTriggerMDT_decode_xer; +xer_type_encoder_f S1ap_ReportingTriggerMDT_encode_xer; +per_type_decoder_f S1ap_ReportingTriggerMDT_decode_uper; +per_type_encoder_f S1ap_ReportingTriggerMDT_encode_uper; +per_type_decoder_f S1ap_ReportingTriggerMDT_decode_aper; +per_type_encoder_f S1ap_ReportingTriggerMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ReportingTriggerMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-RequestType.c b/lib/asn/asn1c/S1ap-RequestType.c new file mode 100644 index 0000000000..0a2e174f65 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RequestType.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-RequestType.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "reportArea" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_RequestType, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P49, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_RequestType = { + "S1ap-RequestType", + "S1ap-RequestType", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_RequestType_1, + 3, /* Elements count */ + &asn_SPC_S1ap_RequestType_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-RequestType.h b/lib/asn/asn1c/S1ap-RequestType.h new file mode 100644 index 0000000000..29d79011f1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-RequestType.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-RequestType */ +typedef struct S1ap_RequestType { + S1ap_EventType_t eventType; + S1ap_ReportArea_t reportArea; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_RequestType_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Reset.c b/lib/asn/asn1c/S1ap-Reset.c new file mode 100644 index 0000000000..99f0433366 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Reset.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Reset.h" + +static int +memb_s1ap_Reset_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_Reset_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_Reset_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_Reset_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_Reset_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_Reset_ies_specs_2 = { + sizeof(struct S1ap_Reset__s1ap_Reset_ies), + offsetof(struct S1ap_Reset__s1ap_Reset_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_Reset_ies_2 = { + "s1ap-Reset-ies", + "s1ap-Reset-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_Reset_ies_tags_2, + sizeof(asn_DEF_s1ap_Reset_ies_tags_2) + /sizeof(asn_DEF_s1ap_Reset_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_Reset_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_Reset_ies_tags_2) + /sizeof(asn_DEF_s1ap_Reset_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_Reset_ies_constr_2, + asn_MBR_s1ap_Reset_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_Reset_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_Reset_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_Reset, s1ap_Reset_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_Reset_ies_2, + memb_s1ap_Reset_ies_constraint_1, + &asn_PER_memb_s1ap_Reset_ies_constr_2, + 0, + "s1ap-Reset-ies" + }, +}; +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 } /* s1ap-Reset-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_Reset = { + "S1ap-Reset", + "S1ap-Reset", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_Reset_1, + 1, /* Elements count */ + &asn_SPC_S1ap_Reset_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-Reset.h b/lib/asn/asn1c/S1ap-Reset.h new file mode 100644 index 0000000000..df3d5a0b1b --- /dev/null +++ b/lib/asn/asn1c/S1ap-Reset.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_Reset_H_ +#define _S1ap_Reset_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-Reset */ +typedef struct S1ap_Reset { + struct S1ap_Reset__s1ap_Reset_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_Reset_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_Reset_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ResetAcknowledge.c b/lib/asn/asn1c/S1ap-ResetAcknowledge.c new file mode 100644 index 0000000000..2abe46e099 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ResetAcknowledge.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ResetAcknowledge.h" + +static int +memb_s1ap_ResetAcknowledge_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_ResetAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_ResetAcknowledge_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_ResetAcknowledge_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_ResetAcknowledge_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_ResetAcknowledge_ies_specs_2 = { + sizeof(struct S1ap_ResetAcknowledge__s1ap_ResetAcknowledge_ies), + offsetof(struct S1ap_ResetAcknowledge__s1ap_ResetAcknowledge_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_ResetAcknowledge_ies_2 = { + "s1ap-ResetAcknowledge-ies", + "s1ap-ResetAcknowledge-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_ResetAcknowledge_ies_tags_2, + sizeof(asn_DEF_s1ap_ResetAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_ResetAcknowledge_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_ResetAcknowledge_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_ResetAcknowledge_ies_tags_2) + /sizeof(asn_DEF_s1ap_ResetAcknowledge_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_ResetAcknowledge_ies_constr_2, + asn_MBR_s1ap_ResetAcknowledge_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_ResetAcknowledge_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_ResetAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ResetAcknowledge, s1ap_ResetAcknowledge_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_ResetAcknowledge_ies_2, + memb_s1ap_ResetAcknowledge_ies_constraint_1, + &asn_PER_memb_s1ap_ResetAcknowledge_ies_constr_2, + 0, + "s1ap-ResetAcknowledge-ies" + }, +}; +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 } /* s1ap-ResetAcknowledge-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ResetAcknowledge = { + "S1ap-ResetAcknowledge", + "S1ap-ResetAcknowledge", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ResetAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1ap_ResetAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ResetAcknowledge.h b/lib/asn/asn1c/S1ap-ResetAcknowledge.h new file mode 100644 index 0000000000..a9a9c368f5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ResetAcknowledge.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ResetAcknowledge_H_ +#define _S1ap_ResetAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-ResetAcknowledge */ +typedef struct S1ap_ResetAcknowledge { + struct S1ap_ResetAcknowledge__s1ap_ResetAcknowledge_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_ResetAcknowledge_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_ResetAcknowledge_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ResetAll.c b/lib/asn/asn1c/S1ap-ResetAll.c new file mode 100644 index 0000000000..6c7a9cac50 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ResetAll.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ResetAll.h" + +int +S1ap_ResetAll_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_ResetAll_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_ResetAll_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_ResetAll_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_ResetAll_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_ResetAll_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_ResetAll_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_ResetAll_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_ResetAll_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_ResetAll_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_ResetAll_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_ResetAll_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_ResetAll_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_ResetAll_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 */ +}; +static 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 = { + "S1ap-ResetAll", + "S1ap-ResetAll", + S1ap_ResetAll_free, + S1ap_ResetAll_print, + S1ap_ResetAll_constraint, + S1ap_ResetAll_decode_ber, + S1ap_ResetAll_encode_der, + S1ap_ResetAll_decode_xer, + S1ap_ResetAll_encode_xer, + S1ap_ResetAll_decode_uper, + S1ap_ResetAll_encode_uper, + S1ap_ResetAll_decode_aper, + S1ap_ResetAll_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ResetAll_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_ResetAll_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ResetAll.h b/lib/asn/asn1c/S1ap-ResetAll.h new file mode 100644 index 0000000000..7b752c2fd2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ResetAll.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_ResetAll; +asn_struct_free_f S1ap_ResetAll_free; +asn_struct_print_f S1ap_ResetAll_print; +asn_constr_check_f S1ap_ResetAll_constraint; +ber_type_decoder_f S1ap_ResetAll_decode_ber; +der_type_encoder_f S1ap_ResetAll_encode_der; +xer_type_decoder_f S1ap_ResetAll_decode_xer; +xer_type_encoder_f S1ap_ResetAll_encode_xer; +per_type_decoder_f S1ap_ResetAll_decode_uper; +per_type_encoder_f S1ap_ResetAll_encode_uper; +per_type_decoder_f S1ap_ResetAll_decode_aper; +per_type_encoder_f S1ap_ResetAll_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ResetAll_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ResetType.c b/lib/asn/asn1c/S1ap-ResetType.c new file mode 100644 index 0000000000..d94dfbb1a6 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ResetType.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ResetType.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ResetType_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "s1-Interface" + }, + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ResetType = { + "S1ap-ResetType", + "S1ap-ResetType", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_ResetType_constr_1, + asn_MBR_S1ap_ResetType_1, + 2, /* Elements count */ + &asn_SPC_S1ap_ResetType_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ResetType.h b/lib/asn/asn1c/S1ap-ResetType.h new file mode 100644 index 0000000000..9129789490 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ResetType.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ResetType_H_ +#define _S1ap_ResetType_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ResetAll.h" +#include "S1ap-UE-associatedLogicalS1-ConnectionListRes.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_ResetType_PR { + S1ap_ResetType_PR_NOTHING, /* No components present */ + S1ap_ResetType_PR_s1_Interface, + S1ap_ResetType_PR_partOfS1_Interface, + /* Extensions may appear below */ + +} S1ap_ResetType_PR; + +/* S1ap-ResetType */ +typedef struct S1ap_ResetType { + S1ap_ResetType_PR present; + union S1ap_ResetType_u { + S1ap_ResetAll_t s1_Interface; + S1ap_UE_associatedLogicalS1_ConnectionListRes_t 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/asn/asn1c/S1ap-Routing-ID.c b/lib/asn/asn1c/S1ap-Routing-ID.c new file mode 100644 index 0000000000..4903d7caa9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Routing-ID.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Routing-ID.h" + +int +S1ap_Routing_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 255LL)) { + /* 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 void +S1ap_Routing_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_Routing_ID_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Routing_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Routing_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Routing_ID_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Routing_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Routing_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Routing_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Routing_ID_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Routing_ID_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Routing_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Routing_ID_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Routing_ID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (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 = { + "S1ap-Routing-ID", + "S1ap-Routing-ID", + S1ap_Routing_ID_free, + S1ap_Routing_ID_print, + S1ap_Routing_ID_constraint, + S1ap_Routing_ID_decode_ber, + S1ap_Routing_ID_encode_der, + S1ap_Routing_ID_decode_xer, + S1ap_Routing_ID_encode_xer, + S1ap_Routing_ID_decode_uper, + S1ap_Routing_ID_encode_uper, + S1ap_Routing_ID_decode_aper, + S1ap_Routing_ID_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Routing_ID_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Routing-ID.h b/lib/asn/asn1c/S1ap-Routing-ID.h new file mode 100644 index 0000000000..bdc1ab7c85 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Routing-ID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-S-TMSI.c b/lib/asn/asn1c/S1ap-S-TMSI.c new file mode 100644 index 0000000000..b00349968e --- /dev/null +++ b/lib/asn/asn1c/S1ap-S-TMSI.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-S-TMSI.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P59, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_S_TMSI = { + "S1ap-S-TMSI", + "S1ap-S-TMSI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_S_TMSI_1, + 3, /* Elements count */ + &asn_SPC_S1ap_S_TMSI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-S-TMSI.h b/lib/asn/asn1c/S1ap-S-TMSI.h new file mode 100644 index 0000000000..4a3f0e775f --- /dev/null +++ b/lib/asn/asn1c/S1ap-S-TMSI.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-S-TMSI */ +typedef struct S1ap_S_TMSI { + S1ap_MME_Code_t mMEC; + S1ap_M_TMSI_t m_TMSI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_S_TMSI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-S1SetupFailure.c b/lib/asn/asn1c/S1ap-S1SetupFailure.c new file mode 100644 index 0000000000..08f65b4d97 --- /dev/null +++ b/lib/asn/asn1c/S1ap-S1SetupFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-S1SetupFailure.h" + +static int +memb_s1ap_S1SetupFailure_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_S1SetupFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_S1SetupFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_S1SetupFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_S1SetupFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_S1SetupFailure_ies_specs_2 = { + sizeof(struct S1ap_S1SetupFailure__s1ap_S1SetupFailure_ies), + offsetof(struct S1ap_S1SetupFailure__s1ap_S1SetupFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_S1SetupFailure_ies_2 = { + "s1ap-S1SetupFailure-ies", + "s1ap-S1SetupFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_S1SetupFailure_ies_tags_2, + sizeof(asn_DEF_s1ap_S1SetupFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_S1SetupFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_S1SetupFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_S1SetupFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_S1SetupFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_S1SetupFailure_ies_constr_2, + asn_MBR_s1ap_S1SetupFailure_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_S1SetupFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_S1SetupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_S1SetupFailure, s1ap_S1SetupFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_S1SetupFailure_ies_2, + memb_s1ap_S1SetupFailure_ies_constraint_1, + &asn_PER_memb_s1ap_S1SetupFailure_ies_constr_2, + 0, + "s1ap-S1SetupFailure-ies" + }, +}; +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 } /* s1ap-S1SetupFailure-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_S1SetupFailure = { + "S1ap-S1SetupFailure", + "S1ap-S1SetupFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_S1SetupFailure_1, + 1, /* Elements count */ + &asn_SPC_S1ap_S1SetupFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-S1SetupFailure.h b/lib/asn/asn1c/S1ap-S1SetupFailure.h new file mode 100644 index 0000000000..a2bab01130 --- /dev/null +++ b/lib/asn/asn1c/S1ap-S1SetupFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_S1SetupFailure_H_ +#define _S1ap_S1SetupFailure_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-S1SetupFailure */ +typedef struct S1ap_S1SetupFailure { + struct S1ap_S1SetupFailure__s1ap_S1SetupFailure_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_S1SetupFailure_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_S1SetupFailure_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-S1SetupRequest.c b/lib/asn/asn1c/S1ap-S1SetupRequest.c new file mode 100644 index 0000000000..f1f6c00397 --- /dev/null +++ b/lib/asn/asn1c/S1ap-S1SetupRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-S1SetupRequest.h" + +static int +memb_s1ap_S1SetupRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_S1SetupRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_S1SetupRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_S1SetupRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_S1SetupRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_S1SetupRequest_ies_specs_2 = { + sizeof(struct S1ap_S1SetupRequest__s1ap_S1SetupRequest_ies), + offsetof(struct S1ap_S1SetupRequest__s1ap_S1SetupRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_S1SetupRequest_ies_2 = { + "s1ap-S1SetupRequest-ies", + "s1ap-S1SetupRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_S1SetupRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_S1SetupRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_S1SetupRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_S1SetupRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_S1SetupRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_S1SetupRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_S1SetupRequest_ies_constr_2, + asn_MBR_s1ap_S1SetupRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_S1SetupRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_S1SetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_S1SetupRequest, s1ap_S1SetupRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_S1SetupRequest_ies_2, + memb_s1ap_S1SetupRequest_ies_constraint_1, + &asn_PER_memb_s1ap_S1SetupRequest_ies_constr_2, + 0, + "s1ap-S1SetupRequest-ies" + }, +}; +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 } /* s1ap-S1SetupRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_S1SetupRequest = { + "S1ap-S1SetupRequest", + "S1ap-S1SetupRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_S1SetupRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_S1SetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-S1SetupRequest.h b/lib/asn/asn1c/S1ap-S1SetupRequest.h new file mode 100644 index 0000000000..f9e4ac7113 --- /dev/null +++ b/lib/asn/asn1c/S1ap-S1SetupRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_S1SetupRequest_H_ +#define _S1ap_S1SetupRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-S1SetupRequest */ +typedef struct S1ap_S1SetupRequest { + struct S1ap_S1SetupRequest__s1ap_S1SetupRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_S1SetupRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_S1SetupRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-S1SetupResponse.c b/lib/asn/asn1c/S1ap-S1SetupResponse.c new file mode 100644 index 0000000000..1a7fd22652 --- /dev/null +++ b/lib/asn/asn1c/S1ap-S1SetupResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-S1SetupResponse.h" + +static int +memb_s1ap_S1SetupResponse_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_S1SetupResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_S1SetupResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_S1SetupResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_S1SetupResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_S1SetupResponse_ies_specs_2 = { + sizeof(struct S1ap_S1SetupResponse__s1ap_S1SetupResponse_ies), + offsetof(struct S1ap_S1SetupResponse__s1ap_S1SetupResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_S1SetupResponse_ies_2 = { + "s1ap-S1SetupResponse-ies", + "s1ap-S1SetupResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_S1SetupResponse_ies_tags_2, + sizeof(asn_DEF_s1ap_S1SetupResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_S1SetupResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_S1SetupResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_S1SetupResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_S1SetupResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_S1SetupResponse_ies_constr_2, + asn_MBR_s1ap_S1SetupResponse_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_S1SetupResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_S1SetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_S1SetupResponse, s1ap_S1SetupResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_S1SetupResponse_ies_2, + memb_s1ap_S1SetupResponse_ies_constraint_1, + &asn_PER_memb_s1ap_S1SetupResponse_ies_constr_2, + 0, + "s1ap-S1SetupResponse-ies" + }, +}; +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 } /* s1ap-S1SetupResponse-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_S1SetupResponse = { + "S1ap-S1SetupResponse", + "S1ap-S1SetupResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_S1SetupResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_S1SetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-S1SetupResponse.h b/lib/asn/asn1c/S1ap-S1SetupResponse.h new file mode 100644 index 0000000000..269aa115ac --- /dev/null +++ b/lib/asn/asn1c/S1ap-S1SetupResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_S1SetupResponse_H_ +#define _S1ap_S1SetupResponse_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-S1SetupResponse */ +typedef struct S1ap_S1SetupResponse { + struct S1ap_S1SetupResponse__s1ap_S1SetupResponse_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_S1SetupResponse_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_S1SetupResponse_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SONConfigurationTransfer.c b/lib/asn/asn1c/S1ap-SONConfigurationTransfer.c new file mode 100644 index 0000000000..1d2c66a48d --- /dev/null +++ b/lib/asn/asn1c/S1ap-SONConfigurationTransfer.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SONConfigurationTransfer.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "sONInformation" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_SONConfigurationTransfer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P53, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SONConfigurationTransfer = { + "S1ap-SONConfigurationTransfer", + "S1ap-SONConfigurationTransfer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_SONConfigurationTransfer_1, + 4, /* Elements count */ + &asn_SPC_S1ap_SONConfigurationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SONConfigurationTransfer.h b/lib/asn/asn1c/S1ap-SONConfigurationTransfer.h new file mode 100644 index 0000000000..06e23857aa --- /dev/null +++ b/lib/asn/asn1c/S1ap-SONConfigurationTransfer.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-SONConfigurationTransfer */ +typedef struct S1ap_SONConfigurationTransfer { + S1ap_TargeteNB_ID_t targeteNB_ID; + S1ap_SourceeNB_ID_t sourceeNB_ID; + S1ap_SONInformation_t sONInformation; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_SONConfigurationTransfer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SONInformation.c b/lib/asn/asn1c/S1ap-SONInformation.c new file mode 100644 index 0000000000..2e220395b0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SONInformation.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SONInformation.h" + +static asn_per_constraints_t asn_PER_type_S1ap_SONInformation_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "sONInformationRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_SONInformation, choice.sONInformationReply), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_SONInformationReply, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "sONInformationReply" + }, +}; +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 */ +}; +static 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, + 2, /* Count of tags in the map */ + 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SONInformation = { + "S1ap-SONInformation", + "S1ap-SONInformation", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_SONInformation_constr_1, + asn_MBR_S1ap_SONInformation_1, + 2, /* Elements count */ + &asn_SPC_S1ap_SONInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SONInformation.h b/lib/asn/asn1c/S1ap-SONInformation.h new file mode 100644 index 0000000000..06409d0d7b --- /dev/null +++ b/lib/asn/asn1c/S1ap-SONInformation.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_SONInformation_H_ +#define _S1ap_SONInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-SONInformationRequest.h" +#include "S1ap-SONInformationReply.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_SONInformation_PR { + S1ap_SONInformation_PR_NOTHING, /* No components present */ + S1ap_SONInformation_PR_sONInformationRequest, + S1ap_SONInformation_PR_sONInformationReply, + /* Extensions may appear below */ + +} S1ap_SONInformation_PR; + +/* S1ap-SONInformation */ +typedef struct S1ap_SONInformation { + S1ap_SONInformation_PR present; + union S1ap_SONInformation_u { + S1ap_SONInformationRequest_t sONInformationRequest; + S1ap_SONInformationReply_t sONInformationReply; + /* + * This type is extensible, + * possible extensions are below. + */ + } 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_SONInformation_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SONInformationReply.c b/lib/asn/asn1c/S1ap-SONInformationReply.c new file mode 100644 index 0000000000..3de0afd17f --- /dev/null +++ b/lib/asn/asn1c/S1ap-SONInformationReply.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SONInformationReply.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "x2TNLConfigurationInfo" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_SONInformationReply, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P52, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SONInformationReply = { + "S1ap-SONInformationReply", + "S1ap-SONInformationReply", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_SONInformationReply_1, + 2, /* Elements count */ + &asn_SPC_S1ap_SONInformationReply_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SONInformationReply.h b/lib/asn/asn1c/S1ap-SONInformationReply.h new file mode 100644 index 0000000000..2594cd93cf --- /dev/null +++ b/lib/asn/asn1c/S1ap-SONInformationReply.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_SONInformationReply_H_ +#define _S1ap_SONInformationReply_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_X2TNLConfigurationInfo; +struct ProtocolExtensionContainer; + +/* S1ap-SONInformationReply */ +typedef struct S1ap_SONInformationReply { + struct S1ap_X2TNLConfigurationInfo *x2TNLConfigurationInfo /* OPTIONAL */; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-X2TNLConfigurationInfo.h" +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_SONInformationReply_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SONInformationRequest.c b/lib/asn/asn1c/S1ap-SONInformationRequest.c new file mode 100644 index 0000000000..9f632372ed --- /dev/null +++ b/lib/asn/asn1c/S1ap-SONInformationRequest.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SONInformationRequest.h" + +int +S1ap_SONInformationRequest_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_SONInformationRequest_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SONInformationRequest_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SONInformationRequest_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SONInformationRequest_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SONInformationRequest_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SONInformationRequest_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SONInformationRequest_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SONInformationRequest_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SONInformationRequest_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SONInformationRequest_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SONInformationRequest_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_SONInformationRequest_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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-Synchronization-Info" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1ap_SONInformationRequest_enum2value_1[] = { + 1, /* time-Synchronization-Info(1) */ + 0 /* x2TNL-Configuration-Info(0) */ + /* This list is extensible */ +}; +static 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 */ + 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_SONInformationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SONInformationRequest = { + "S1ap-SONInformationRequest", + "S1ap-SONInformationRequest", + S1ap_SONInformationRequest_free, + S1ap_SONInformationRequest_print, + S1ap_SONInformationRequest_constraint, + S1ap_SONInformationRequest_decode_ber, + S1ap_SONInformationRequest_encode_der, + S1ap_SONInformationRequest_decode_xer, + S1ap_SONInformationRequest_encode_xer, + S1ap_SONInformationRequest_decode_uper, + S1ap_SONInformationRequest_encode_uper, + S1ap_SONInformationRequest_decode_aper, + S1ap_SONInformationRequest_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_SONInformationRequest_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_SONInformationRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SONInformationRequest.h b/lib/asn/asn1c/S1ap-SONInformationRequest.h new file mode 100644 index 0000000000..b2d04f0194 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SONInformationRequest.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_Synchronization_Info = 1 +} e_S1ap_SONInformationRequest; + +/* S1ap-SONInformationRequest */ +typedef long S1ap_SONInformationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_SONInformationRequest; +asn_struct_free_f S1ap_SONInformationRequest_free; +asn_struct_print_f S1ap_SONInformationRequest_print; +asn_constr_check_f S1ap_SONInformationRequest_constraint; +ber_type_decoder_f S1ap_SONInformationRequest_decode_ber; +der_type_encoder_f S1ap_SONInformationRequest_encode_der; +xer_type_decoder_f S1ap_SONInformationRequest_decode_xer; +xer_type_encoder_f S1ap_SONInformationRequest_encode_xer; +per_type_decoder_f S1ap_SONInformationRequest_decode_uper; +per_type_encoder_f S1ap_SONInformationRequest_encode_uper; +per_type_decoder_f S1ap_SONInformationRequest_decode_aper; +per_type_encoder_f S1ap_SONInformationRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_SONInformationRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SRVCCHOIndication.c b/lib/asn/asn1c/S1ap-SRVCCHOIndication.c new file mode 100644 index 0000000000..44bc445b34 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SRVCCHOIndication.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SRVCCHOIndication.h" + +int +S1ap_SRVCCHOIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_SRVCCHOIndication_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SRVCCHOIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SRVCCHOIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SRVCCHOIndication_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SRVCCHOIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SRVCCHOIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SRVCCHOIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SRVCCHOIndication_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SRVCCHOIndication_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SRVCCHOIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SRVCCHOIndication_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_SRVCCHOIndication_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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 = { + "S1ap-SRVCCHOIndication", + "S1ap-SRVCCHOIndication", + S1ap_SRVCCHOIndication_free, + S1ap_SRVCCHOIndication_print, + S1ap_SRVCCHOIndication_constraint, + S1ap_SRVCCHOIndication_decode_ber, + S1ap_SRVCCHOIndication_encode_der, + S1ap_SRVCCHOIndication_decode_xer, + S1ap_SRVCCHOIndication_encode_xer, + S1ap_SRVCCHOIndication_decode_uper, + S1ap_SRVCCHOIndication_encode_uper, + S1ap_SRVCCHOIndication_decode_aper, + S1ap_SRVCCHOIndication_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_SRVCCHOIndication_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_SRVCCHOIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SRVCCHOIndication.h b/lib/asn/asn1c/S1ap-SRVCCHOIndication.h new file mode 100644 index 0000000000..24cae7ba77 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SRVCCHOIndication.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-SRVCCOperationPossible.c b/lib/asn/asn1c/S1ap-SRVCCOperationPossible.c new file mode 100644 index 0000000000..1ad3b6129f --- /dev/null +++ b/lib/asn/asn1c/S1ap-SRVCCOperationPossible.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SRVCCOperationPossible.h" + +int +S1ap_SRVCCOperationPossible_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_SRVCCOperationPossible_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SRVCCOperationPossible_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SRVCCOperationPossible_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SRVCCOperationPossible_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SRVCCOperationPossible_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SRVCCOperationPossible_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SRVCCOperationPossible_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SRVCCOperationPossible_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SRVCCOperationPossible_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SRVCCOperationPossible_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SRVCCOperationPossible_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_SRVCCOperationPossible_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (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 = { + "S1ap-SRVCCOperationPossible", + "S1ap-SRVCCOperationPossible", + S1ap_SRVCCOperationPossible_free, + S1ap_SRVCCOperationPossible_print, + S1ap_SRVCCOperationPossible_constraint, + S1ap_SRVCCOperationPossible_decode_ber, + S1ap_SRVCCOperationPossible_encode_der, + S1ap_SRVCCOperationPossible_decode_xer, + S1ap_SRVCCOperationPossible_encode_xer, + S1ap_SRVCCOperationPossible_decode_uper, + S1ap_SRVCCOperationPossible_encode_uper, + S1ap_SRVCCOperationPossible_decode_aper, + S1ap_SRVCCOperationPossible_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_SRVCCOperationPossible_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_SRVCCOperationPossible_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SRVCCOperationPossible.h b/lib/asn/asn1c/S1ap-SRVCCOperationPossible.h new file mode 100644 index 0000000000..f90f6ed878 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SRVCCOperationPossible.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-SecurityContext.c b/lib/asn/asn1c/S1ap-SecurityContext.c new file mode 100644 index 0000000000..90308db693 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SecurityContext.c @@ -0,0 +1,114 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SecurityContext.h" + +static int +memb_nextHopChainingCount_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 7LL)) { + /* 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_per_constraints_t asn_PER_memb_nextHopChainingCount_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0l, 7l } /* (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, + memb_nextHopChainingCount_constraint_1, + &asn_PER_memb_nextHopChainingCount_constr_2, + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "nextHopParameter" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_SecurityContext, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P51, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SecurityContext = { + "S1ap-SecurityContext", + "S1ap-SecurityContext", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_SecurityContext_1, + 3, /* Elements count */ + &asn_SPC_S1ap_SecurityContext_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SecurityContext.h b/lib/asn/asn1c/S1ap-SecurityContext.h new file mode 100644 index 0000000000..ccef1bfb1d --- /dev/null +++ b/lib/asn/asn1c/S1ap-SecurityContext.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-SecurityContext */ +typedef struct S1ap_SecurityContext { + long nextHopChainingCount; + S1ap_SecurityKey_t nextHopParameter; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_SecurityContext_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SecurityKey.c b/lib/asn/asn1c/S1ap-SecurityKey.c new file mode 100644 index 0000000000..a310ef3ef9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SecurityKey.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SecurityKey.h" + +int +S1ap_SecurityKey_constraint(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 == 256LL)) { + /* 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 void +S1ap_SecurityKey_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_SecurityKey_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SecurityKey_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SecurityKey_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SecurityKey_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SecurityKey_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SecurityKey_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SecurityKey_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SecurityKey_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SecurityKey_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SecurityKey_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SecurityKey_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_SecurityKey_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 256l, 256l } /* (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 = { + "S1ap-SecurityKey", + "S1ap-SecurityKey", + S1ap_SecurityKey_free, + S1ap_SecurityKey_print, + S1ap_SecurityKey_constraint, + S1ap_SecurityKey_decode_ber, + S1ap_SecurityKey_encode_der, + S1ap_SecurityKey_decode_xer, + S1ap_SecurityKey_encode_xer, + S1ap_SecurityKey_decode_uper, + S1ap_SecurityKey_encode_uper, + S1ap_SecurityKey_decode_aper, + S1ap_SecurityKey_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_SecurityKey_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-SecurityKey.h b/lib/asn/asn1c/S1ap-SecurityKey.h new file mode 100644 index 0000000000..b1782cba8c --- /dev/null +++ b/lib/asn/asn1c/S1ap-SecurityKey.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-SerialNumber.c b/lib/asn/asn1c/S1ap-SerialNumber.c new file mode 100644 index 0000000000..e24caac89d --- /dev/null +++ b/lib/asn/asn1c/S1ap-SerialNumber.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SerialNumber.h" + +int +S1ap_SerialNumber_constraint(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 == 16LL)) { + /* 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 void +S1ap_SerialNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_SerialNumber_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SerialNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SerialNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SerialNumber_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SerialNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SerialNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SerialNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SerialNumber_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SerialNumber_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SerialNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SerialNumber_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_SerialNumber_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16l, 16l } /* (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 = { + "S1ap-SerialNumber", + "S1ap-SerialNumber", + S1ap_SerialNumber_free, + S1ap_SerialNumber_print, + S1ap_SerialNumber_constraint, + S1ap_SerialNumber_decode_ber, + S1ap_SerialNumber_encode_der, + S1ap_SerialNumber_decode_xer, + S1ap_SerialNumber_encode_xer, + S1ap_SerialNumber_decode_uper, + S1ap_SerialNumber_encode_uper, + S1ap_SerialNumber_decode_aper, + S1ap_SerialNumber_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_SerialNumber_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-SerialNumber.h b/lib/asn/asn1c/S1ap-SerialNumber.h new file mode 100644 index 0000000000..af40852a01 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SerialNumber.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-ServedGUMMEIs.c b/lib/asn/asn1c/S1ap-ServedGUMMEIs.c new file mode 100644 index 0000000000..125bd8d1da --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedGUMMEIs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ServedGUMMEIs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ServedGUMMEIs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1l, 8l } /* (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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-ServedGUMMEIs", + "S1ap-ServedGUMMEIs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ServedGUMMEIs_constr_1, + asn_MBR_S1ap_ServedGUMMEIs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ServedGUMMEIs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ServedGUMMEIs.h b/lib/asn/asn1c/S1ap-ServedGUMMEIs.h new file mode 100644 index 0000000000..f6755c153e --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedGUMMEIs.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 + +/* Referred external types */ +#include "S1ap-ServedGUMMEIsItem.h" + +#endif /* _S1ap_ServedGUMMEIs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ServedGUMMEIsItem.c b/lib/asn/asn1c/S1ap-ServedGUMMEIsItem.c new file mode 100644 index 0000000000..3988ca8552 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedGUMMEIsItem.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ServedGUMMEIsItem.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "servedMMECs" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_ServedGUMMEIsItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P56, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 3, /* Start extensions */ + 5 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ServedGUMMEIsItem = { + "S1ap-ServedGUMMEIsItem", + "S1ap-ServedGUMMEIsItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_ServedGUMMEIsItem_1, + 4, /* Elements count */ + &asn_SPC_S1ap_ServedGUMMEIsItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ServedGUMMEIsItem.h b/lib/asn/asn1c/S1ap-ServedGUMMEIsItem.h new file mode 100644 index 0000000000..652b2b847b --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedGUMMEIsItem.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-ServedGUMMEIsItem */ +typedef struct S1ap_ServedGUMMEIsItem { + S1ap_ServedPLMNs_t servedPLMNs; + S1ap_ServedGroupIDs_t servedGroupIDs; + S1ap_ServedMMECs_t servedMMECs; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_ServedGUMMEIsItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ServedGroupIDs.c b/lib/asn/asn1c/S1ap-ServedGroupIDs.c new file mode 100644 index 0000000000..5504dd2e57 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedGroupIDs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ServedGroupIDs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ServedGroupIDs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ServedGroupIDs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ServedGroupIDs", + "S1ap-ServedGroupIDs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ServedGroupIDs_constr_1, + asn_MBR_S1ap_ServedGroupIDs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ServedGroupIDs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ServedGroupIDs.h b/lib/asn/asn1c/S1ap-ServedGroupIDs.h new file mode 100644 index 0000000000..f32f26d124 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedGroupIDs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ServedGroupIDs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ServedMMECs.c b/lib/asn/asn1c/S1ap-ServedMMECs.c new file mode 100644 index 0000000000..26f4e31004 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedMMECs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ServedMMECs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ServedMMECs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ServedMMECs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ServedMMECs", + "S1ap-ServedMMECs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ServedMMECs_constr_1, + asn_MBR_S1ap_ServedMMECs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ServedMMECs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ServedMMECs.h b/lib/asn/asn1c/S1ap-ServedMMECs.h new file mode 100644 index 0000000000..a648cd3e2b --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedMMECs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ServedMMECs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-ServedPLMNs.c b/lib/asn/asn1c/S1ap-ServedPLMNs.c new file mode 100644 index 0000000000..c0b42b90e7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedPLMNs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ServedPLMNs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_ServedPLMNs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_ServedPLMNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-ServedPLMNs", + "S1ap-ServedPLMNs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_ServedPLMNs_constr_1, + asn_MBR_S1ap_ServedPLMNs_1, + 1, /* Single element */ + &asn_SPC_S1ap_ServedPLMNs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ServedPLMNs.h b/lib/asn/asn1c/S1ap-ServedPLMNs.h new file mode 100644 index 0000000000..26d5b99828 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ServedPLMNs.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_ServedPLMNs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Source-ToTarget-TransparentContainer.c b/lib/asn/asn1c/S1ap-Source-ToTarget-TransparentContainer.c new file mode 100644 index 0000000000..87801bc193 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Source-ToTarget-TransparentContainer.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Source-ToTarget-TransparentContainer.h" + +int +S1ap_Source_ToTarget_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Source_ToTarget_TransparentContainer_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Source_ToTarget_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Source_ToTarget_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Source_ToTarget_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Source_ToTarget_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Source_ToTarget_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Source_ToTarget_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Source_ToTarget_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Source_ToTarget_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Source_ToTarget_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-Source-ToTarget-TransparentContainer", + "S1ap-Source-ToTarget-TransparentContainer", + S1ap_Source_ToTarget_TransparentContainer_free, + S1ap_Source_ToTarget_TransparentContainer_print, + S1ap_Source_ToTarget_TransparentContainer_constraint, + S1ap_Source_ToTarget_TransparentContainer_decode_ber, + S1ap_Source_ToTarget_TransparentContainer_encode_der, + S1ap_Source_ToTarget_TransparentContainer_decode_xer, + S1ap_Source_ToTarget_TransparentContainer_encode_xer, + S1ap_Source_ToTarget_TransparentContainer_decode_uper, + S1ap_Source_ToTarget_TransparentContainer_encode_uper, + S1ap_Source_ToTarget_TransparentContainer_decode_aper, + S1ap_Source_ToTarget_TransparentContainer_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Source-ToTarget-TransparentContainer.h b/lib/asn/asn1c/S1ap-Source-ToTarget-TransparentContainer.h new file mode 100644 index 0000000000..1958f1062e --- /dev/null +++ b/lib/asn/asn1c/S1ap-Source-ToTarget-TransparentContainer.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-SourceBSS-ToTargetBSS-TransparentContainer.c b/lib/asn/asn1c/S1ap-SourceBSS-ToTargetBSS-TransparentContainer.c new file mode 100644 index 0000000000..d950b9d5bd --- /dev/null +++ b/lib/asn/asn1c/S1ap-SourceBSS-ToTargetBSS-TransparentContainer.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h" + +int +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SourceBSS_ToTargetBSS_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-SourceBSS-ToTargetBSS-TransparentContainer", + "S1ap-SourceBSS-ToTargetBSS-TransparentContainer", + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_free, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_print, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_constraint, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_decode_ber, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_encode_der, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_decode_xer, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_encode_xer, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_decode_uper, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_encode_uper, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_decode_aper, + S1ap_SourceBSS_ToTargetBSS_TransparentContainer_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h b/lib/asn/asn1c/S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h new file mode 100644 index 0000000000..28a6cb47b2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-SourceRNC-ToTargetRNC-TransparentContainer.c b/lib/asn/asn1c/S1ap-SourceRNC-ToTargetRNC-TransparentContainer.c new file mode 100644 index 0000000000..3d26b8e684 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SourceRNC-ToTargetRNC-TransparentContainer.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SourceRNC-ToTargetRNC-TransparentContainer.h" + +int +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SourceRNC_ToTargetRNC_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-SourceRNC-ToTargetRNC-TransparentContainer", + "S1ap-SourceRNC-ToTargetRNC-TransparentContainer", + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_free, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_print, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_constraint, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_decode_ber, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_encode_der, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_decode_xer, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_encode_xer, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_decode_uper, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_encode_uper, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_decode_aper, + S1ap_SourceRNC_ToTargetRNC_TransparentContainer_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-SourceRNC-ToTargetRNC-TransparentContainer.h b/lib/asn/asn1c/S1ap-SourceRNC-ToTargetRNC-TransparentContainer.h new file mode 100644 index 0000000000..25161ac511 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SourceRNC-ToTargetRNC-TransparentContainer.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-SourceeNB-ID.c b/lib/asn/asn1c/S1ap-SourceeNB-ID.c new file mode 100644 index 0000000000..0756b70988 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SourceeNB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SourceeNB-ID.h" + +static asn_TYPE_member_t asn_MBR_S1ap_SourceeNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_SourceeNB_ID, global_S1ap_ENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Global_ENB_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "global-S1ap-ENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_SourceeNB_ID, selected_S1ap_TAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_TAI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "selected-S1ap-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_ProtocolExtensionContainer_5749P54, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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-S1ap-ENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* selected-S1ap-TAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static 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, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SourceeNB_ID = { + "S1ap-SourceeNB-ID", + "S1ap-SourceeNB-ID", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_SourceeNB_ID_1, + 3, /* Elements count */ + &asn_SPC_S1ap_SourceeNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SourceeNB-ID.h b/lib/asn/asn1c/S1ap-SourceeNB-ID.h new file mode 100644 index 0000000000..0aa45269df --- /dev/null +++ b/lib/asn/asn1c/S1ap-SourceeNB-ID.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-SourceeNB-ID */ +typedef struct S1ap_SourceeNB_ID { + S1ap_Global_ENB_ID_t global_S1ap_ENB_ID; + S1ap_TAI_t selected_S1ap_TAI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_SourceeNB_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SourceeNB-ToTargeteNB-TransparentContainer.c b/lib/asn/asn1c/S1ap-SourceeNB-ToTargeteNB-TransparentContainer.c new file mode 100644 index 0000000000..89359e2e92 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SourceeNB-ToTargeteNB-TransparentContainer.c @@ -0,0 +1,114 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SourceeNB-ToTargeteNB-TransparentContainer.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P55, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 5, /* Start extensions */ + 7 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SourceeNB_ToTargeteNB_TransparentContainer = { + "S1ap-SourceeNB-ToTargeteNB-TransparentContainer", + "S1ap-SourceeNB-ToTargeteNB-TransparentContainer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_SourceeNB_ToTargeteNB_TransparentContainer_1, + 6, /* Elements count */ + &asn_SPC_S1ap_SourceeNB_ToTargeteNB_TransparentContainer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SourceeNB-ToTargeteNB-TransparentContainer.h b/lib/asn/asn1c/S1ap-SourceeNB-ToTargeteNB-TransparentContainer.h new file mode 100644 index 0000000000..b958f190e7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SourceeNB-ToTargeteNB-TransparentContainer.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "S1ap-E-RABInformationList.h" +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_SourceeNB_ToTargeteNB_TransparentContainer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-StratumLevel.c b/lib/asn/asn1c/S1ap-StratumLevel.c new file mode 100644 index 0000000000..be726da7e8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-StratumLevel.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-StratumLevel.h" + +int +S1ap_StratumLevel_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 3LL)) { + /* 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 void +S1ap_StratumLevel_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_StratumLevel_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_StratumLevel_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_StratumLevel_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_StratumLevel_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_StratumLevel_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_StratumLevel_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_StratumLevel_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_StratumLevel_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_StratumLevel_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_StratumLevel_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_StratumLevel_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_StratumLevel_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (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 = { + "S1ap-StratumLevel", + "S1ap-StratumLevel", + S1ap_StratumLevel_free, + S1ap_StratumLevel_print, + S1ap_StratumLevel_constraint, + S1ap_StratumLevel_decode_ber, + S1ap_StratumLevel_encode_der, + S1ap_StratumLevel_decode_xer, + S1ap_StratumLevel_encode_xer, + S1ap_StratumLevel_decode_uper, + S1ap_StratumLevel_encode_uper, + S1ap_StratumLevel_decode_aper, + S1ap_StratumLevel_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_StratumLevel_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-StratumLevel.h b/lib/asn/asn1c/S1ap-StratumLevel.h new file mode 100644 index 0000000000..7b195fd128 --- /dev/null +++ b/lib/asn/asn1c/S1ap-StratumLevel.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-SubscriberProfileIDforRFP.c b/lib/asn/asn1c/S1ap-SubscriberProfileIDforRFP.c new file mode 100644 index 0000000000..c6819d9228 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SubscriberProfileIDforRFP.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SubscriberProfileIDforRFP.h" + +int +S1ap_SubscriberProfileIDforRFP_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 1LL && value <= 256LL)) { + /* 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 void +S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_SubscriberProfileIDforRFP_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SubscriberProfileIDforRFP_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SubscriberProfileIDforRFP_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SubscriberProfileIDforRFP_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SubscriberProfileIDforRFP_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SubscriberProfileIDforRFP_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SubscriberProfileIDforRFP_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SubscriberProfileIDforRFP_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SubscriberProfileIDforRFP_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SubscriberProfileIDforRFP_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_SubscriberProfileIDforRFP_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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 = { + "S1ap-SubscriberProfileIDforRFP", + "S1ap-SubscriberProfileIDforRFP", + S1ap_SubscriberProfileIDforRFP_free, + S1ap_SubscriberProfileIDforRFP_print, + S1ap_SubscriberProfileIDforRFP_constraint, + S1ap_SubscriberProfileIDforRFP_decode_ber, + S1ap_SubscriberProfileIDforRFP_encode_der, + S1ap_SubscriberProfileIDforRFP_decode_xer, + S1ap_SubscriberProfileIDforRFP_encode_xer, + S1ap_SubscriberProfileIDforRFP_decode_uper, + S1ap_SubscriberProfileIDforRFP_encode_uper, + S1ap_SubscriberProfileIDforRFP_decode_aper, + S1ap_SubscriberProfileIDforRFP_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_SubscriberProfileIDforRFP_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-SubscriberProfileIDforRFP.h b/lib/asn/asn1c/S1ap-SubscriberProfileIDforRFP.h new file mode 100644 index 0000000000..10f9ab072c --- /dev/null +++ b/lib/asn/asn1c/S1ap-SubscriberProfileIDforRFP.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-SuccessfulOutcome.c b/lib/asn/asn1c/S1ap-SuccessfulOutcome.c new file mode 100644 index 0000000000..b7dd0f4279 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SuccessfulOutcome.c @@ -0,0 +1,160 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SuccessfulOutcome.h" + +static int +memb_procedureCode_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 255LL)) { + /* 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_criticality_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 GCC_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_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, + memb_procedureCode_constraint_1, + &asn_PER_memb_procedureCode_constr_2, + 0, + "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, + memb_criticality_constraint_1, + &asn_PER_memb_criticality_constr_3, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_SuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_value_constraint_1, + &asn_PER_memb_value_constr_4, + 0, + "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 */ +}; +static 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, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SuccessfulOutcome = { + "S1ap-SuccessfulOutcome", + "S1ap-SuccessfulOutcome", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_SuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_S1ap_SuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SuccessfulOutcome.h b/lib/asn/asn1c/S1ap-SuccessfulOutcome.h new file mode 100644 index 0000000000..7a595cd03e --- /dev/null +++ b/lib/asn/asn1c/S1ap-SuccessfulOutcome.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_SuccessfulOutcome_H_ +#define _S1ap_SuccessfulOutcome_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ProcedureCode.h" +#include "S1ap-Criticality.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-SuccessfulOutcome */ +typedef struct S1ap_SuccessfulOutcome { + S1ap_ProcedureCode_t procedureCode; + S1ap_Criticality_t criticality; + ANY_t 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_SuccessfulOutcome_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SupportedTAs-Item.c b/lib/asn/asn1c/S1ap-SupportedTAs-Item.c new file mode 100644 index 0000000000..7b8835702d --- /dev/null +++ b/lib/asn/asn1c/S1ap-SupportedTAs-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SupportedTAs-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P57, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SupportedTAs_Item = { + "S1ap-SupportedTAs-Item", + "S1ap-SupportedTAs-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_SupportedTAs_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_SupportedTAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SupportedTAs-Item.h b/lib/asn/asn1c/S1ap-SupportedTAs-Item.h new file mode 100644 index 0000000000..8ec1d077e2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SupportedTAs-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-SupportedTAs-Item */ +typedef struct S1ap_SupportedTAs_Item { + S1ap_TAC_t tAC; + S1ap_BPLMNs_t broadcastPLMNs; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_SupportedTAs_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SupportedTAs.c b/lib/asn/asn1c/S1ap-SupportedTAs.c new file mode 100644 index 0000000000..a845d8bad5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SupportedTAs.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SupportedTAs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_SupportedTAs_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-SupportedTAs", + "S1ap-SupportedTAs", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_SupportedTAs_constr_1, + asn_MBR_S1ap_SupportedTAs_1, + 1, /* Single element */ + &asn_SPC_S1ap_SupportedTAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SupportedTAs.h b/lib/asn/asn1c/S1ap-SupportedTAs.h new file mode 100644 index 0000000000..991e1ea1c9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SupportedTAs.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 + +/* Referred external types */ +#include "S1ap-SupportedTAs-Item.h" + +#endif /* _S1ap_SupportedTAs_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-SynchronizationStatus.c b/lib/asn/asn1c/S1ap-SynchronizationStatus.c new file mode 100644 index 0000000000..47b7dec182 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SynchronizationStatus.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-SynchronizationStatus.h" + +int +S1ap_SynchronizationStatus_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_SynchronizationStatus_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_SynchronizationStatus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_SynchronizationStatus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_SynchronizationStatus_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_SynchronizationStatus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_SynchronizationStatus_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_SynchronizationStatus_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_SynchronizationStatus_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_SynchronizationStatus_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_SynchronizationStatus_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_SynchronizationStatus_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_SynchronizationStatus_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1ap_SynchronizationStatus_value2enum_1[] = { + { 0, 11, "synchronous" }, + { 1, 12, "asynchronous" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1ap_SynchronizationStatus_enum2value_1[] = { + 1, /* asynchronous(1) */ + 0 /* synchronous(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1ap_SynchronizationStatus_specs_1 = { + asn_MAP_S1ap_SynchronizationStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1ap_SynchronizationStatus_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_SynchronizationStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_SynchronizationStatus = { + "S1ap-SynchronizationStatus", + "S1ap-SynchronizationStatus", + S1ap_SynchronizationStatus_free, + S1ap_SynchronizationStatus_print, + S1ap_SynchronizationStatus_constraint, + S1ap_SynchronizationStatus_decode_ber, + S1ap_SynchronizationStatus_encode_der, + S1ap_SynchronizationStatus_decode_xer, + S1ap_SynchronizationStatus_encode_xer, + S1ap_SynchronizationStatus_decode_uper, + S1ap_SynchronizationStatus_encode_uper, + S1ap_SynchronizationStatus_decode_aper, + S1ap_SynchronizationStatus_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_SynchronizationStatus_tags_1, + sizeof(asn_DEF_S1ap_SynchronizationStatus_tags_1) + /sizeof(asn_DEF_S1ap_SynchronizationStatus_tags_1[0]), /* 1 */ + asn_DEF_S1ap_SynchronizationStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_SynchronizationStatus_tags_1) + /sizeof(asn_DEF_S1ap_SynchronizationStatus_tags_1[0]), /* 1 */ + &asn_PER_type_S1ap_SynchronizationStatus_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_SynchronizationStatus_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-SynchronizationStatus.h b/lib/asn/asn1c/S1ap-SynchronizationStatus.h new file mode 100644 index 0000000000..474a99fcc2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-SynchronizationStatus.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_SynchronizationStatus_H_ +#define _S1ap_SynchronizationStatus_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_SynchronizationStatus { + S1ap_SynchronizationStatus_synchronous = 0, + S1ap_SynchronizationStatus_asynchronous = 1 + /* + * Enumeration is extensible + */ +} e_S1ap_SynchronizationStatus; + +/* S1ap-SynchronizationStatus */ +typedef long S1ap_SynchronizationStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_SynchronizationStatus; +asn_struct_free_f S1ap_SynchronizationStatus_free; +asn_struct_print_f S1ap_SynchronizationStatus_print; +asn_constr_check_f S1ap_SynchronizationStatus_constraint; +ber_type_decoder_f S1ap_SynchronizationStatus_decode_ber; +der_type_encoder_f S1ap_SynchronizationStatus_encode_der; +xer_type_decoder_f S1ap_SynchronizationStatus_decode_xer; +xer_type_encoder_f S1ap_SynchronizationStatus_encode_xer; +per_type_decoder_f S1ap_SynchronizationStatus_decode_uper; +per_type_encoder_f S1ap_SynchronizationStatus_encode_uper; +per_type_decoder_f S1ap_SynchronizationStatus_decode_aper; +per_type_encoder_f S1ap_SynchronizationStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_SynchronizationStatus_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TABasedMDT.c b/lib/asn/asn1c/S1ap-TABasedMDT.c new file mode 100644 index 0000000000..b4236abf65 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TABasedMDT.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TABasedMDT.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "tAListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_TABasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P63, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TABasedMDT = { + "S1ap-TABasedMDT", + "S1ap-TABasedMDT", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TABasedMDT_1, + 2, /* Elements count */ + &asn_SPC_S1ap_TABasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TABasedMDT.h b/lib/asn/asn1c/S1ap-TABasedMDT.h new file mode 100644 index 0000000000..6c4ccbf4c7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TABasedMDT.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-TABasedMDT */ +typedef struct S1ap_TABasedMDT { + S1ap_TAListforMDT_t tAListforMDT; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TABasedMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAC.c b/lib/asn/asn1c/S1ap-TAC.c new file mode 100644 index 0000000000..417afffec8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAC.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAC.h" + +int +S1ap_TAC_constraint(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 == 2LL)) { + /* 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 void +S1ap_TAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_TAC_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TAC_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TAC_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TAC_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TAC_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_TAC_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (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 = { + "S1ap-TAC", + "S1ap-TAC", + S1ap_TAC_free, + S1ap_TAC_print, + S1ap_TAC_constraint, + S1ap_TAC_decode_ber, + S1ap_TAC_encode_der, + S1ap_TAC_decode_xer, + S1ap_TAC_encode_xer, + S1ap_TAC_decode_uper, + S1ap_TAC_encode_uper, + S1ap_TAC_decode_aper, + S1ap_TAC_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TAC_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAC.h b/lib/asn/asn1c/S1ap-TAC.h new file mode 100644 index 0000000000..435c4e6b74 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAC.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-TAI-Broadcast-Item.c b/lib/asn/asn1c/S1ap-TAI-Broadcast-Item.c new file mode 100644 index 0000000000..54dea9e080 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI-Broadcast-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAI-Broadcast-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P61, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TAI_Broadcast_Item = { + "S1ap-TAI-Broadcast-Item", + "S1ap-TAI-Broadcast-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TAI_Broadcast_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_TAI_Broadcast_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAI-Broadcast-Item.h b/lib/asn/asn1c/S1ap-TAI-Broadcast-Item.h new file mode 100644 index 0000000000..21bf3429cb --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI-Broadcast-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-TAI-Broadcast-Item */ +typedef struct S1ap_TAI_Broadcast_Item { + S1ap_TAI_t tAI; + S1ap_CompletedCellinTAI_t completedCellinTAI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TAI_Broadcast_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAI-Broadcast.c b/lib/asn/asn1c/S1ap-TAI-Broadcast.c new file mode 100644 index 0000000000..28f475c8a9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI-Broadcast.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAI-Broadcast.h" + +static asn_per_constraints_t asn_PER_type_S1ap_TAI_Broadcast_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_TAI_Broadcast_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-TAI-Broadcast", + "S1ap-TAI-Broadcast", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TAI_Broadcast_constr_1, + asn_MBR_S1ap_TAI_Broadcast_1, + 1, /* Single element */ + &asn_SPC_S1ap_TAI_Broadcast_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAI-Broadcast.h b/lib/asn/asn1c/S1ap-TAI-Broadcast.h new file mode 100644 index 0000000000..01d2a067fb --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI-Broadcast.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-TAI-Broadcast-Item.h" + +#endif /* _S1ap_TAI_Broadcast_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAI-Cancelled-Item.c b/lib/asn/asn1c/S1ap-TAI-Cancelled-Item.c new file mode 100644 index 0000000000..e92e91e470 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI-Cancelled-Item.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAI-Cancelled-Item.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P62, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TAI_Cancelled_Item = { + "S1ap-TAI-Cancelled-Item", + "S1ap-TAI-Cancelled-Item", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TAI_Cancelled_Item_1, + 3, /* Elements count */ + &asn_SPC_S1ap_TAI_Cancelled_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAI-Cancelled-Item.h b/lib/asn/asn1c/S1ap-TAI-Cancelled-Item.h new file mode 100644 index 0000000000..a7b700810d --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI-Cancelled-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-TAI-Cancelled-Item */ +typedef struct S1ap_TAI_Cancelled_Item { + S1ap_TAI_t tAI; + S1ap_CancelledCellinTAI_t cancelledCellinTAI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TAI_Cancelled_Item_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAI-Cancelled.c b/lib/asn/asn1c/S1ap-TAI-Cancelled.c new file mode 100644 index 0000000000..cde9a36b1a --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI-Cancelled.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAI-Cancelled.h" + +static asn_per_constraints_t asn_PER_type_S1ap_TAI_Cancelled_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_TAI_Cancelled_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-TAI-Cancelled", + "S1ap-TAI-Cancelled", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TAI_Cancelled_constr_1, + asn_MBR_S1ap_TAI_Cancelled_1, + 1, /* Single element */ + &asn_SPC_S1ap_TAI_Cancelled_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAI-Cancelled.h b/lib/asn/asn1c/S1ap-TAI-Cancelled.h new file mode 100644 index 0000000000..1a034c124b --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI-Cancelled.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-TAI-Cancelled-Item.h" + +#endif /* _S1ap_TAI_Cancelled_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAI.c b/lib/asn/asn1c/S1ap-TAI.c new file mode 100644 index 0000000000..2747b181be --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAI.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "tAC" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_TAI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P60, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TAI = { + "S1ap-TAI", + "S1ap-TAI", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TAI_1, + 3, /* Elements count */ + &asn_SPC_S1ap_TAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAI.h b/lib/asn/asn1c/S1ap-TAI.h new file mode 100644 index 0000000000..e483a6b96f --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAI.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-TAI */ +typedef struct S1ap_TAI { + S1ap_PLMNidentity_t pLMNidentity; + S1ap_TAC_t tAC; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TAI_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAIItem.c b/lib/asn/asn1c/S1ap-TAIItem.c new file mode 100644 index 0000000000..928375859a --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAIItem.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAIItem.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "tAI" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_TAIItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P13, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TAIItem = { + "S1ap-TAIItem", + "S1ap-TAIItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TAIItem_1, + 2, /* Elements count */ + &asn_SPC_S1ap_TAIItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAIItem.h b/lib/asn/asn1c/S1ap-TAIItem.h new file mode 100644 index 0000000000..c18aea1643 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAIItem.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-TAIItem */ +typedef struct S1ap_TAIItem { + S1ap_TAI_t tAI; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TAIItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAIList.c b/lib/asn/asn1c/S1ap-TAIList.c new file mode 100644 index 0000000000..404addd71d --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAIList.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAIList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_TAIList_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-TAIList", + "S1ap-TAIList", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TAIList_constr_1, + asn_MBR_S1ap_TAIList_1, + 1, /* Single element */ + &asn_SPC_S1ap_TAIList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAIList.h b/lib/asn/asn1c/S1ap-TAIList.h new file mode 100644 index 0000000000..fceca2c4fb --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAIList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_TAIList_H_ +#define _S1ap_TAIList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Field; + +/* S1ap-TAIList */ +typedef struct S1ap_TAIList { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_TAIList_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAIListforWarning.c b/lib/asn/asn1c/S1ap-TAIListforWarning.c new file mode 100644 index 0000000000..9c0bb29609 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAIListforWarning.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAIListforWarning.h" + +static asn_per_constraints_t asn_PER_type_S1ap_TAIListforWarning_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_TAIListforWarning_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-TAIListforWarning", + "S1ap-TAIListforWarning", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TAIListforWarning_constr_1, + asn_MBR_S1ap_TAIListforWarning_1, + 1, /* Single element */ + &asn_SPC_S1ap_TAIListforWarning_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAIListforWarning.h b/lib/asn/asn1c/S1ap-TAIListforWarning.h new file mode 100644 index 0000000000..b6429ee122 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAIListforWarning.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-TAI.h" + +#endif /* _S1ap_TAIListforWarning_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TAListforMDT.c b/lib/asn/asn1c/S1ap-TAListforMDT.c new file mode 100644 index 0000000000..b234a77bfa --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAListforMDT.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TAListforMDT.h" + +static asn_per_constraints_t asn_PER_type_S1ap_TAListforMDT_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1l, 8l } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_TAListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-TAListforMDT", + "S1ap-TAListforMDT", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TAListforMDT_constr_1, + asn_MBR_S1ap_TAListforMDT_1, + 1, /* Single element */ + &asn_SPC_S1ap_TAListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TAListforMDT.h b/lib/asn/asn1c/S1ap-TAListforMDT.h new file mode 100644 index 0000000000..8ef9a0021a --- /dev/null +++ b/lib/asn/asn1c/S1ap-TAListforMDT.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_TAListforMDT_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TBCD-STRING.c b/lib/asn/asn1c/S1ap-TBCD-STRING.c new file mode 100644 index 0000000000..c8dfa8cb58 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TBCD-STRING.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TBCD-STRING.h" + +int +S1ap_TBCD_STRING_constraint(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 == 3LL)) { + /* 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 void +S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_TBCD_STRING_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TBCD_STRING_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TBCD_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TBCD_STRING_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TBCD_STRING_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TBCD_STRING_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TBCD_STRING_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TBCD_STRING_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TBCD_STRING_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TBCD_STRING_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TBCD_STRING_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_TBCD_STRING_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3l, 3l } /* (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 = { + "S1ap-TBCD-STRING", + "S1ap-TBCD-STRING", + S1ap_TBCD_STRING_free, + S1ap_TBCD_STRING_print, + S1ap_TBCD_STRING_constraint, + S1ap_TBCD_STRING_decode_ber, + S1ap_TBCD_STRING_encode_der, + S1ap_TBCD_STRING_decode_xer, + S1ap_TBCD_STRING_encode_xer, + S1ap_TBCD_STRING_decode_uper, + S1ap_TBCD_STRING_encode_uper, + S1ap_TBCD_STRING_decode_aper, + S1ap_TBCD_STRING_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TBCD_STRING_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-TBCD-STRING.h b/lib/asn/asn1c/S1ap-TBCD-STRING.h new file mode 100644 index 0000000000..eb720654b8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TBCD-STRING.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-Target-ToSource-TransparentContainer.c b/lib/asn/asn1c/S1ap-Target-ToSource-TransparentContainer.c new file mode 100644 index 0000000000..fcdbcb23cc --- /dev/null +++ b/lib/asn/asn1c/S1ap-Target-ToSource-TransparentContainer.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Target-ToSource-TransparentContainer.h" + +int +S1ap_Target_ToSource_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_Target_ToSource_TransparentContainer_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Target_ToSource_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Target_ToSource_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Target_ToSource_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Target_ToSource_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Target_ToSource_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Target_ToSource_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Target_ToSource_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Target_ToSource_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Target_ToSource_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-Target-ToSource-TransparentContainer", + "S1ap-Target-ToSource-TransparentContainer", + S1ap_Target_ToSource_TransparentContainer_free, + S1ap_Target_ToSource_TransparentContainer_print, + S1ap_Target_ToSource_TransparentContainer_constraint, + S1ap_Target_ToSource_TransparentContainer_decode_ber, + S1ap_Target_ToSource_TransparentContainer_encode_der, + S1ap_Target_ToSource_TransparentContainer_decode_xer, + S1ap_Target_ToSource_TransparentContainer_encode_xer, + S1ap_Target_ToSource_TransparentContainer_decode_uper, + S1ap_Target_ToSource_TransparentContainer_encode_uper, + S1ap_Target_ToSource_TransparentContainer_decode_aper, + S1ap_Target_ToSource_TransparentContainer_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Target-ToSource-TransparentContainer.h b/lib/asn/asn1c/S1ap-Target-ToSource-TransparentContainer.h new file mode 100644 index 0000000000..17f4d918e2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Target-ToSource-TransparentContainer.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-TargetBSS-ToSourceBSS-TransparentContainer.c b/lib/asn/asn1c/S1ap-TargetBSS-ToSourceBSS-TransparentContainer.c new file mode 100644 index 0000000000..5ef8ac1475 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargetBSS-ToSourceBSS-TransparentContainer.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TargetBSS-ToSourceBSS-TransparentContainer.h" + +int +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TargetBSS_ToSourceBSS_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-TargetBSS-ToSourceBSS-TransparentContainer", + "S1ap-TargetBSS-ToSourceBSS-TransparentContainer", + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_free, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_print, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_constraint, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_decode_ber, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_encode_der, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_decode_xer, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_encode_xer, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_decode_uper, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_encode_uper, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_decode_aper, + S1ap_TargetBSS_ToSourceBSS_TransparentContainer_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-TargetBSS-ToSourceBSS-TransparentContainer.h b/lib/asn/asn1c/S1ap-TargetBSS-ToSourceBSS-TransparentContainer.h new file mode 100644 index 0000000000..6d5799ad94 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargetBSS-ToSourceBSS-TransparentContainer.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-TargetID.c b/lib/asn/asn1c/S1ap-TargetID.c new file mode 100644 index 0000000000..054fa660b0 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargetID.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TargetID.h" + +static asn_per_constraints_t asn_PER_type_S1ap_TargetID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (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_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "targeteNB-ID" + }, + { ATF_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "targetRNC-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_TargetID, choice.cGI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_CGI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TargetID = { + "S1ap-TargetID", + "S1ap-TargetID", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_TargetID_constr_1, + asn_MBR_S1ap_TargetID_1, + 3, /* Elements count */ + &asn_SPC_S1ap_TargetID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TargetID.h b/lib/asn/asn1c/S1ap-TargetID.h new file mode 100644 index 0000000000..cbcccc9427 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargetID.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_TargetID_H_ +#define _S1ap_TargetID_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-TargeteNB-ID.h" +#include "S1ap-TargetRNC-ID.h" +#include "S1ap-CGI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_TargetID_PR { + S1ap_TargetID_PR_NOTHING, /* No components present */ + S1ap_TargetID_PR_targeteNB_ID, + S1ap_TargetID_PR_targetRNC_ID, + S1ap_TargetID_PR_cGI, + /* Extensions may appear below */ + +} S1ap_TargetID_PR; + +/* S1ap-TargetID */ +typedef struct S1ap_TargetID { + S1ap_TargetID_PR present; + union S1ap_TargetID_u { + S1ap_TargeteNB_ID_t targeteNB_ID; + S1ap_TargetRNC_ID_t targetRNC_ID; + S1ap_CGI_t 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/asn/asn1c/S1ap-TargetRNC-ID.c b/lib/asn/asn1c/S1ap-TargetRNC-ID.c new file mode 100644 index 0000000000..56dc994fe3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargetRNC-ID.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TargetRNC-ID.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P66, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TargetRNC_ID = { + "S1ap-TargetRNC-ID", + "S1ap-TargetRNC-ID", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TargetRNC_ID_1, + 5, /* Elements count */ + &asn_SPC_S1ap_TargetRNC_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TargetRNC-ID.h b/lib/asn/asn1c/S1ap-TargetRNC-ID.h new file mode 100644 index 0000000000..baa4e12662 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargetRNC-ID.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TargetRNC_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TargetRNC-ToSourceRNC-TransparentContainer.c b/lib/asn/asn1c/S1ap-TargetRNC-ToSourceRNC-TransparentContainer.c new file mode 100644 index 0000000000..8a36c2b9f8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargetRNC-ToSourceRNC-TransparentContainer.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TargetRNC-ToSourceRNC-TransparentContainer.h" + +int +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TargetRNC_ToSourceRNC_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-TargetRNC-ToSourceRNC-TransparentContainer", + "S1ap-TargetRNC-ToSourceRNC-TransparentContainer", + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_free, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_print, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_constraint, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_decode_ber, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_encode_der, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_decode_xer, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_encode_xer, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_decode_uper, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_encode_uper, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_decode_aper, + S1ap_TargetRNC_ToSourceRNC_TransparentContainer_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-TargetRNC-ToSourceRNC-TransparentContainer.h b/lib/asn/asn1c/S1ap-TargetRNC-ToSourceRNC-TransparentContainer.h new file mode 100644 index 0000000000..165db319a3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargetRNC-ToSourceRNC-TransparentContainer.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-TargeteNB-ID.c b/lib/asn/asn1c/S1ap-TargeteNB-ID.c new file mode 100644 index 0000000000..534face88a --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargeteNB-ID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TargeteNB-ID.h" + +static asn_TYPE_member_t asn_MBR_S1ap_TargeteNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_TargeteNB_ID, global_S1ap_ENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_Global_ENB_ID, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "global-S1ap-ENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_TargeteNB_ID, selected_S1ap_TAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_TAI, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "selected-S1ap-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_ProtocolExtensionContainer_5749P65, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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-S1ap-ENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* selected-S1ap-TAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TargeteNB_ID = { + "S1ap-TargeteNB-ID", + "S1ap-TargeteNB-ID", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TargeteNB_ID_1, + 3, /* Elements count */ + &asn_SPC_S1ap_TargeteNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TargeteNB-ID.h b/lib/asn/asn1c/S1ap-TargeteNB-ID.h new file mode 100644 index 0000000000..211b771176 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargeteNB-ID.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-TargeteNB-ID */ +typedef struct S1ap_TargeteNB_ID { + S1ap_Global_ENB_ID_t global_S1ap_ENB_ID; + S1ap_TAI_t selected_S1ap_TAI; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TargeteNB_ID_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TargeteNB-ToSourceeNB-TransparentContainer.c b/lib/asn/asn1c/S1ap-TargeteNB-ToSourceeNB-TransparentContainer.c new file mode 100644 index 0000000000..1c444983a4 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargeteNB-ToSourceeNB-TransparentContainer.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TargeteNB-ToSourceeNB-TransparentContainer.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P67, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TargeteNB_ToSourceeNB_TransparentContainer = { + "S1ap-TargeteNB-ToSourceeNB-TransparentContainer", + "S1ap-TargeteNB-ToSourceeNB-TransparentContainer", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TargeteNB_ToSourceeNB_TransparentContainer_1, + 2, /* Elements count */ + &asn_SPC_S1ap_TargeteNB_ToSourceeNB_TransparentContainer_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TargeteNB-ToSourceeNB-TransparentContainer.h b/lib/asn/asn1c/S1ap-TargeteNB-ToSourceeNB-TransparentContainer.h new file mode 100644 index 0000000000..fa76977c77 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TargeteNB-ToSourceeNB-TransparentContainer.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-TargeteNB-ToSourceeNB-TransparentContainer */ +typedef struct S1ap_TargeteNB_ToSourceeNB_TransparentContainer { + S1ap_RRC_Container_t rRC_Container; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TargeteNB_ToSourceeNB_TransparentContainer_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Threshold-RSRP.c b/lib/asn/asn1c/S1ap-Threshold-RSRP.c new file mode 100644 index 0000000000..6945c2af2f --- /dev/null +++ b/lib/asn/asn1c/S1ap-Threshold-RSRP.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Threshold-RSRP.h" + +int +S1ap_Threshold_RSRP_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 97LL)) { + /* 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 void +S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_Threshold_RSRP_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Threshold_RSRP_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Threshold_RSRP_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Threshold_RSRP_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Threshold_RSRP_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Threshold_RSRP_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Threshold_RSRP_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Threshold_RSRP_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Threshold_RSRP_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Threshold_RSRP_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Threshold_RSRP_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Threshold_RSRP_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0l, 97l } /* (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 = { + "S1ap-Threshold-RSRP", + "S1ap-Threshold-RSRP", + S1ap_Threshold_RSRP_free, + S1ap_Threshold_RSRP_print, + S1ap_Threshold_RSRP_constraint, + S1ap_Threshold_RSRP_decode_ber, + S1ap_Threshold_RSRP_encode_der, + S1ap_Threshold_RSRP_decode_xer, + S1ap_Threshold_RSRP_encode_xer, + S1ap_Threshold_RSRP_decode_uper, + S1ap_Threshold_RSRP_encode_uper, + S1ap_Threshold_RSRP_decode_aper, + S1ap_Threshold_RSRP_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Threshold_RSRP_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Threshold-RSRP.h b/lib/asn/asn1c/S1ap-Threshold-RSRP.h new file mode 100644 index 0000000000..914bab4e67 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Threshold-RSRP.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-Threshold-RSRQ.c b/lib/asn/asn1c/S1ap-Threshold-RSRQ.c new file mode 100644 index 0000000000..1260209162 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Threshold-RSRQ.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Threshold-RSRQ.h" + +int +S1ap_Threshold_RSRQ_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 34LL)) { + /* 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 void +S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_Threshold_RSRQ_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Threshold_RSRQ_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Threshold_RSRQ_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Threshold_RSRQ_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Threshold_RSRQ_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Threshold_RSRQ_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Threshold_RSRQ_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Threshold_RSRQ_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Threshold_RSRQ_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Threshold_RSRQ_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Threshold_RSRQ_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Threshold_RSRQ_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0l, 34l } /* (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 = { + "S1ap-Threshold-RSRQ", + "S1ap-Threshold-RSRQ", + S1ap_Threshold_RSRQ_free, + S1ap_Threshold_RSRQ_print, + S1ap_Threshold_RSRQ_constraint, + S1ap_Threshold_RSRQ_decode_ber, + S1ap_Threshold_RSRQ_encode_der, + S1ap_Threshold_RSRQ_decode_xer, + S1ap_Threshold_RSRQ_encode_xer, + S1ap_Threshold_RSRQ_decode_uper, + S1ap_Threshold_RSRQ_encode_uper, + S1ap_Threshold_RSRQ_decode_aper, + S1ap_Threshold_RSRQ_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Threshold_RSRQ_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Threshold-RSRQ.h b/lib/asn/asn1c/S1ap-Threshold-RSRQ.h new file mode 100644 index 0000000000..896c08f31e --- /dev/null +++ b/lib/asn/asn1c/S1ap-Threshold-RSRQ.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-ThresholdEventA2.c b/lib/asn/asn1c/S1ap-ThresholdEventA2.c new file mode 100644 index 0000000000..e0f3ecab65 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ThresholdEventA2.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-ThresholdEventA2.h" + +static asn_TYPE_member_t asn_MBR_S1ap_ThresholdEventA2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_ThresholdEventA2, measurementThreshold), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1ap_MeasurementThresholdA2, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "measurementThreshold" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_ThresholdEventA2, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P68, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_S1ap_ThresholdEventA2_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1ap_ThresholdEventA2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1ap_ThresholdEventA2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementThreshold */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1ap_ThresholdEventA2_specs_1 = { + sizeof(struct S1ap_ThresholdEventA2), + offsetof(struct S1ap_ThresholdEventA2, _asn_ctx), + asn_MAP_S1ap_ThresholdEventA2_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1ap_ThresholdEventA2_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_ThresholdEventA2 = { + "S1ap-ThresholdEventA2", + "S1ap-ThresholdEventA2", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_ThresholdEventA2_tags_1, + sizeof(asn_DEF_S1ap_ThresholdEventA2_tags_1) + /sizeof(asn_DEF_S1ap_ThresholdEventA2_tags_1[0]), /* 1 */ + asn_DEF_S1ap_ThresholdEventA2_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_ThresholdEventA2_tags_1) + /sizeof(asn_DEF_S1ap_ThresholdEventA2_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_S1ap_ThresholdEventA2_1, + 2, /* Elements count */ + &asn_SPC_S1ap_ThresholdEventA2_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-ThresholdEventA2.h b/lib/asn/asn1c/S1ap-ThresholdEventA2.h new file mode 100644 index 0000000000..d36e846eb3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-ThresholdEventA2.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_ThresholdEventA2_H_ +#define _S1ap_ThresholdEventA2_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-MeasurementThresholdA2.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* S1ap-ThresholdEventA2 */ +typedef struct S1ap_ThresholdEventA2 { + S1ap_MeasurementThresholdA2_t measurementThreshold; + struct 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_ThresholdEventA2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_ThresholdEventA2; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_ThresholdEventA2_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-Time-UE-StayedInCell.c b/lib/asn/asn1c/S1ap-Time-UE-StayedInCell.c new file mode 100644 index 0000000000..26aab51c21 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Time-UE-StayedInCell.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-Time-UE-StayedInCell.h" + +int +S1ap_Time_UE_StayedInCell_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 4095LL)) { + /* 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 void +S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_Time_UE_StayedInCell_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_Time_UE_StayedInCell_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_Time_UE_StayedInCell_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_Time_UE_StayedInCell_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_Time_UE_StayedInCell_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_Time_UE_StayedInCell_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_Time_UE_StayedInCell_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_Time_UE_StayedInCell_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_Time_UE_StayedInCell_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_Time_UE_StayedInCell_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_Time_UE_StayedInCell_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0l, 4095l } /* (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 = { + "S1ap-Time-UE-StayedInCell", + "S1ap-Time-UE-StayedInCell", + S1ap_Time_UE_StayedInCell_free, + S1ap_Time_UE_StayedInCell_print, + S1ap_Time_UE_StayedInCell_constraint, + S1ap_Time_UE_StayedInCell_decode_ber, + S1ap_Time_UE_StayedInCell_encode_der, + S1ap_Time_UE_StayedInCell_decode_xer, + S1ap_Time_UE_StayedInCell_encode_xer, + S1ap_Time_UE_StayedInCell_decode_uper, + S1ap_Time_UE_StayedInCell_encode_uper, + S1ap_Time_UE_StayedInCell_decode_aper, + S1ap_Time_UE_StayedInCell_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_Time_UE_StayedInCell_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-Time-UE-StayedInCell.h b/lib/asn/asn1c/S1ap-Time-UE-StayedInCell.h new file mode 100644 index 0000000000..32e9337aa5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-Time-UE-StayedInCell.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-TimeSynchronizationInfo.c b/lib/asn/asn1c/S1ap-TimeSynchronizationInfo.c new file mode 100644 index 0000000000..c622ae0594 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TimeSynchronizationInfo.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TimeSynchronizationInfo.h" + +static asn_TYPE_member_t asn_MBR_S1ap_TimeSynchronizationInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_TimeSynchronizationInfo, stratumLevel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_StratumLevel, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "stratumLevel" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_TimeSynchronizationInfo, synchronizationStatus), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_SynchronizationStatus, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "synchronizationStatus" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_TimeSynchronizationInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P58, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "iE-Extensions" + }, +}; +static const int asn_MAP_S1ap_TimeSynchronizationInfo_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1ap_TimeSynchronizationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1ap_TimeSynchronizationInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* stratumLevel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* synchronizationStatus */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1ap_TimeSynchronizationInfo_specs_1 = { + sizeof(struct S1ap_TimeSynchronizationInfo), + offsetof(struct S1ap_TimeSynchronizationInfo, _asn_ctx), + asn_MAP_S1ap_TimeSynchronizationInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1ap_TimeSynchronizationInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TimeSynchronizationInfo = { + "S1ap-TimeSynchronizationInfo", + "S1ap-TimeSynchronizationInfo", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_TimeSynchronizationInfo_tags_1, + sizeof(asn_DEF_S1ap_TimeSynchronizationInfo_tags_1) + /sizeof(asn_DEF_S1ap_TimeSynchronizationInfo_tags_1[0]), /* 1 */ + asn_DEF_S1ap_TimeSynchronizationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_TimeSynchronizationInfo_tags_1) + /sizeof(asn_DEF_S1ap_TimeSynchronizationInfo_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_S1ap_TimeSynchronizationInfo_1, + 3, /* Elements count */ + &asn_SPC_S1ap_TimeSynchronizationInfo_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TimeSynchronizationInfo.h b/lib/asn/asn1c/S1ap-TimeSynchronizationInfo.h new file mode 100644 index 0000000000..1a8015b448 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TimeSynchronizationInfo.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_TimeSynchronizationInfo_H_ +#define _S1ap_TimeSynchronizationInfo_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-StratumLevel.h" +#include "S1ap-SynchronizationStatus.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* S1ap-TimeSynchronizationInfo */ +typedef struct S1ap_TimeSynchronizationInfo { + S1ap_StratumLevel_t stratumLevel; + S1ap_SynchronizationStatus_t synchronizationStatus; + struct 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_TimeSynchronizationInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_TimeSynchronizationInfo; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TimeSynchronizationInfo_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TimeToWait.c b/lib/asn/asn1c/S1ap-TimeToWait.c new file mode 100644 index 0000000000..c74894a941 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TimeToWait.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TimeToWait.h" + +int +S1ap_TimeToWait_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_TimeToWait_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_TimeToWait_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TimeToWait_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TimeToWait_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TimeToWait_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TimeToWait_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TimeToWait_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TimeToWait_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TimeToWait_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TimeToWait_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TimeToWait_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TimeToWait_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_TimeToWait_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 5l } /* (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 = { + "S1ap-TimeToWait", + "S1ap-TimeToWait", + S1ap_TimeToWait_free, + S1ap_TimeToWait_print, + S1ap_TimeToWait_constraint, + S1ap_TimeToWait_decode_ber, + S1ap_TimeToWait_encode_der, + S1ap_TimeToWait_decode_xer, + S1ap_TimeToWait_encode_xer, + S1ap_TimeToWait_decode_uper, + S1ap_TimeToWait_encode_uper, + S1ap_TimeToWait_decode_aper, + S1ap_TimeToWait_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TimeToWait_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_TimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TimeToWait.h b/lib/asn/asn1c/S1ap-TimeToWait.h new file mode 100644 index 0000000000..74a9d51c17 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TimeToWait.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-TraceActivation.c b/lib/asn/asn1c/S1ap-TraceActivation.c new file mode 100644 index 0000000000..85d7409bdf --- /dev/null +++ b/lib/asn/asn1c/S1ap-TraceActivation.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TraceActivation.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "traceCollectionEntityIPAddress" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_TraceActivation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P69, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 4, /* Start extensions */ + 6 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TraceActivation = { + "S1ap-TraceActivation", + "S1ap-TraceActivation", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TraceActivation_1, + 5, /* Elements count */ + &asn_SPC_S1ap_TraceActivation_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TraceActivation.h b/lib/asn/asn1c/S1ap-TraceActivation.h new file mode 100644 index 0000000000..e9fea7c7ff --- /dev/null +++ b/lib/asn/asn1c/S1ap-TraceActivation.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_TraceActivation_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TraceDepth.c b/lib/asn/asn1c/S1ap-TraceDepth.c new file mode 100644 index 0000000000..863de7ca5e --- /dev/null +++ b/lib/asn/asn1c/S1ap-TraceDepth.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TraceDepth.h" + +int +S1ap_TraceDepth_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_TraceDepth_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_TraceDepth_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TraceDepth_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TraceDepth_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TraceDepth_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TraceDepth_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TraceDepth_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TraceDepth_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TraceDepth_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TraceDepth_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TraceDepth_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TraceDepth_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_TraceDepth_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 5l } /* (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 */ +}; +static 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 = { + "S1ap-TraceDepth", + "S1ap-TraceDepth", + S1ap_TraceDepth_free, + S1ap_TraceDepth_print, + S1ap_TraceDepth_constraint, + S1ap_TraceDepth_decode_ber, + S1ap_TraceDepth_encode_der, + S1ap_TraceDepth_decode_xer, + S1ap_TraceDepth_encode_xer, + S1ap_TraceDepth_decode_uper, + S1ap_TraceDepth_encode_uper, + S1ap_TraceDepth_decode_aper, + S1ap_TraceDepth_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TraceDepth_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_TraceDepth_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TraceDepth.h b/lib/asn/asn1c/S1ap-TraceDepth.h new file mode 100644 index 0000000000..4ba7d2fded --- /dev/null +++ b/lib/asn/asn1c/S1ap-TraceDepth.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_TraceDepth; +asn_struct_free_f S1ap_TraceDepth_free; +asn_struct_print_f S1ap_TraceDepth_print; +asn_constr_check_f S1ap_TraceDepth_constraint; +ber_type_decoder_f S1ap_TraceDepth_decode_ber; +der_type_encoder_f S1ap_TraceDepth_encode_der; +xer_type_decoder_f S1ap_TraceDepth_decode_xer; +xer_type_encoder_f S1ap_TraceDepth_encode_xer; +per_type_decoder_f S1ap_TraceDepth_decode_uper; +per_type_encoder_f S1ap_TraceDepth_encode_uper; +per_type_decoder_f S1ap_TraceDepth_decode_aper; +per_type_encoder_f S1ap_TraceDepth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_TraceDepth_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TraceFailureIndication.c b/lib/asn/asn1c/S1ap-TraceFailureIndication.c new file mode 100644 index 0000000000..c70ee82290 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TraceFailureIndication.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TraceFailureIndication.h" + +static int +memb_s1ap_TraceFailureIndication_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_TraceFailureIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_TraceFailureIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_TraceFailureIndication_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_TraceFailureIndication_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_TraceFailureIndication_ies_specs_2 = { + sizeof(struct S1ap_TraceFailureIndication__s1ap_TraceFailureIndication_ies), + offsetof(struct S1ap_TraceFailureIndication__s1ap_TraceFailureIndication_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_TraceFailureIndication_ies_2 = { + "s1ap-TraceFailureIndication-ies", + "s1ap-TraceFailureIndication-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_TraceFailureIndication_ies_tags_2, + sizeof(asn_DEF_s1ap_TraceFailureIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_TraceFailureIndication_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_TraceFailureIndication_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_TraceFailureIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_TraceFailureIndication_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_TraceFailureIndication_ies_constr_2, + asn_MBR_s1ap_TraceFailureIndication_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_TraceFailureIndication_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_TraceFailureIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_TraceFailureIndication, s1ap_TraceFailureIndication_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_TraceFailureIndication_ies_2, + memb_s1ap_TraceFailureIndication_ies_constraint_1, + &asn_PER_memb_s1ap_TraceFailureIndication_ies_constr_2, + 0, + "s1ap-TraceFailureIndication-ies" + }, +}; +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 } /* s1ap-TraceFailureIndication-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TraceFailureIndication = { + "S1ap-TraceFailureIndication", + "S1ap-TraceFailureIndication", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TraceFailureIndication_1, + 1, /* Elements count */ + &asn_SPC_S1ap_TraceFailureIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TraceFailureIndication.h b/lib/asn/asn1c/S1ap-TraceFailureIndication.h new file mode 100644 index 0000000000..b2d1c17609 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TraceFailureIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_TraceFailureIndication_H_ +#define _S1ap_TraceFailureIndication_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-TraceFailureIndication */ +typedef struct S1ap_TraceFailureIndication { + struct S1ap_TraceFailureIndication__s1ap_TraceFailureIndication_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_TraceFailureIndication_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_TraceFailureIndication_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TraceStart.c b/lib/asn/asn1c/S1ap-TraceStart.c new file mode 100644 index 0000000000..8c9612b40f --- /dev/null +++ b/lib/asn/asn1c/S1ap-TraceStart.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TraceStart.h" + +static int +memb_s1ap_TraceStart_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_TraceStart_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_TraceStart_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_TraceStart_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_TraceStart_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_TraceStart_ies_specs_2 = { + sizeof(struct S1ap_TraceStart__s1ap_TraceStart_ies), + offsetof(struct S1ap_TraceStart__s1ap_TraceStart_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_TraceStart_ies_2 = { + "s1ap-TraceStart-ies", + "s1ap-TraceStart-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_TraceStart_ies_tags_2, + sizeof(asn_DEF_s1ap_TraceStart_ies_tags_2) + /sizeof(asn_DEF_s1ap_TraceStart_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_TraceStart_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_TraceStart_ies_tags_2) + /sizeof(asn_DEF_s1ap_TraceStart_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_TraceStart_ies_constr_2, + asn_MBR_s1ap_TraceStart_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_TraceStart_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_TraceStart_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_TraceStart, s1ap_TraceStart_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_TraceStart_ies_2, + memb_s1ap_TraceStart_ies_constraint_1, + &asn_PER_memb_s1ap_TraceStart_ies_constr_2, + 0, + "s1ap-TraceStart-ies" + }, +}; +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 } /* s1ap-TraceStart-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_TraceStart = { + "S1ap-TraceStart", + "S1ap-TraceStart", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_TraceStart_1, + 1, /* Elements count */ + &asn_SPC_S1ap_TraceStart_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TraceStart.h b/lib/asn/asn1c/S1ap-TraceStart.h new file mode 100644 index 0000000000..e29a889ef5 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TraceStart.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_TraceStart_H_ +#define _S1ap_TraceStart_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-TraceStart */ +typedef struct S1ap_TraceStart { + struct S1ap_TraceStart__s1ap_TraceStart_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_TraceStart_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_TraceStart_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TrafficLoadReductionIndication.c b/lib/asn/asn1c/S1ap-TrafficLoadReductionIndication.c new file mode 100644 index 0000000000..289d575aba --- /dev/null +++ b/lib/asn/asn1c/S1ap-TrafficLoadReductionIndication.c @@ -0,0 +1,166 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TrafficLoadReductionIndication.h" + +int +S1ap_TrafficLoadReductionIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 1LL && value <= 99LL)) { + /* 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 void +S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeInteger.free_struct; + td->print_struct = asn_DEF_NativeInteger.print_struct; + td->check_constraints = asn_DEF_NativeInteger.check_constraints; + td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; + td->der_encoder = asn_DEF_NativeInteger.der_encoder; + td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; + td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; + td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; + td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; + td->aper_decoder = asn_DEF_NativeInteger.aper_decoder; + td->aper_encoder = asn_DEF_NativeInteger.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeInteger.per_constraints; + td->elements = asn_DEF_NativeInteger.elements; + td->elements_count = asn_DEF_NativeInteger.elements_count; + td->specifics = asn_DEF_NativeInteger.specifics; +} + +void +S1ap_TrafficLoadReductionIndication_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TrafficLoadReductionIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TrafficLoadReductionIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TrafficLoadReductionIndication_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TrafficLoadReductionIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TrafficLoadReductionIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TrafficLoadReductionIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TrafficLoadReductionIndication_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TrafficLoadReductionIndication_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TrafficLoadReductionIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TrafficLoadReductionIndication_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_TrafficLoadReductionIndication_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1l, 99l } /* (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 = { + "S1ap-TrafficLoadReductionIndication", + "S1ap-TrafficLoadReductionIndication", + S1ap_TrafficLoadReductionIndication_free, + S1ap_TrafficLoadReductionIndication_print, + S1ap_TrafficLoadReductionIndication_constraint, + S1ap_TrafficLoadReductionIndication_decode_ber, + S1ap_TrafficLoadReductionIndication_encode_der, + S1ap_TrafficLoadReductionIndication_decode_xer, + S1ap_TrafficLoadReductionIndication_encode_xer, + S1ap_TrafficLoadReductionIndication_decode_uper, + S1ap_TrafficLoadReductionIndication_encode_uper, + S1ap_TrafficLoadReductionIndication_decode_aper, + S1ap_TrafficLoadReductionIndication_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TrafficLoadReductionIndication_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-TrafficLoadReductionIndication.h b/lib/asn/asn1c/S1ap-TrafficLoadReductionIndication.h new file mode 100644 index 0000000000..ef8595768f --- /dev/null +++ b/lib/asn/asn1c/S1ap-TrafficLoadReductionIndication.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-TransportLayerAddress.c b/lib/asn/asn1c/S1ap-TransportLayerAddress.c new file mode 100644 index 0000000000..c516d62914 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TransportLayerAddress.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TransportLayerAddress.h" + +int +S1ap_TransportLayerAddress_constraint(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 >= 1LL && size <= 160LL)) { + /* 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 void +S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_TransportLayerAddress_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TransportLayerAddress_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TransportLayerAddress_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TransportLayerAddress_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TransportLayerAddress_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TransportLayerAddress_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TransportLayerAddress_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TransportLayerAddress_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TransportLayerAddress_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TransportLayerAddress_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TransportLayerAddress_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_TransportLayerAddress_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1l, 160l } /* (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 = { + "S1ap-TransportLayerAddress", + "S1ap-TransportLayerAddress", + S1ap_TransportLayerAddress_free, + S1ap_TransportLayerAddress_print, + S1ap_TransportLayerAddress_constraint, + S1ap_TransportLayerAddress_decode_ber, + S1ap_TransportLayerAddress_encode_der, + S1ap_TransportLayerAddress_decode_xer, + S1ap_TransportLayerAddress_encode_xer, + S1ap_TransportLayerAddress_decode_uper, + S1ap_TransportLayerAddress_encode_uper, + S1ap_TransportLayerAddress_decode_aper, + S1ap_TransportLayerAddress_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TransportLayerAddress_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-TransportLayerAddress.h b/lib/asn/asn1c/S1ap-TransportLayerAddress.h new file mode 100644 index 0000000000..1dec5657d7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TransportLayerAddress.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_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; +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/asn/asn1c/S1ap-TriggeringMessage.c b/lib/asn/asn1c/S1ap-TriggeringMessage.c new file mode 100644 index 0000000000..263ca4c0b1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TriggeringMessage.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TriggeringMessage.h" + +int +S1ap_TriggeringMessage_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_TriggeringMessage_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TriggeringMessage_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TriggeringMessage_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TriggeringMessage_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TriggeringMessage_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TriggeringMessage_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TriggeringMessage_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TriggeringMessage_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TriggeringMessage_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TriggeringMessage_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TriggeringMessage_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_TriggeringMessage_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (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) */ +}; +static 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 = { + "S1ap-TriggeringMessage", + "S1ap-TriggeringMessage", + S1ap_TriggeringMessage_free, + S1ap_TriggeringMessage_print, + S1ap_TriggeringMessage_constraint, + S1ap_TriggeringMessage_decode_ber, + S1ap_TriggeringMessage_encode_der, + S1ap_TriggeringMessage_decode_xer, + S1ap_TriggeringMessage_encode_xer, + S1ap_TriggeringMessage_decode_uper, + S1ap_TriggeringMessage_encode_uper, + S1ap_TriggeringMessage_decode_aper, + S1ap_TriggeringMessage_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TriggeringMessage_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_TriggeringMessage_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TriggeringMessage.h b/lib/asn/asn1c/S1ap-TriggeringMessage.h new file mode 100644 index 0000000000..acdabb7210 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TriggeringMessage.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_TriggeringMessage; +asn_struct_free_f S1ap_TriggeringMessage_free; +asn_struct_print_f S1ap_TriggeringMessage_print; +asn_constr_check_f S1ap_TriggeringMessage_constraint; +ber_type_decoder_f S1ap_TriggeringMessage_decode_ber; +der_type_encoder_f S1ap_TriggeringMessage_encode_der; +xer_type_decoder_f S1ap_TriggeringMessage_decode_xer; +xer_type_encoder_f S1ap_TriggeringMessage_encode_xer; +per_type_decoder_f S1ap_TriggeringMessage_decode_uper; +per_type_encoder_f S1ap_TriggeringMessage_encode_uper; +per_type_decoder_f S1ap_TriggeringMessage_decode_aper; +per_type_encoder_f S1ap_TriggeringMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_TriggeringMessage_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-TypeOfError.c b/lib/asn/asn1c/S1ap-TypeOfError.c new file mode 100644 index 0000000000..e48a42050b --- /dev/null +++ b/lib/asn/asn1c/S1ap-TypeOfError.c @@ -0,0 +1,168 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-TypeOfError.h" + +int +S1ap_TypeOfError_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_TypeOfError_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_NativeEnumerated.free_struct; + td->print_struct = asn_DEF_NativeEnumerated.print_struct; + td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; + td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; + td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; + td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; + td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; + td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; + td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; + td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder; + td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; + td->elements = asn_DEF_NativeEnumerated.elements; + td->elements_count = asn_DEF_NativeEnumerated.elements_count; + /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ +} + +void +S1ap_TypeOfError_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_TypeOfError_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_TypeOfError_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_TypeOfError_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_TypeOfError_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_TypeOfError_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_TypeOfError_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_TypeOfError_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_TypeOfError_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_TypeOfError_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_TypeOfError_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_TypeOfError_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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 */ +}; +static 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 = { + "S1ap-TypeOfError", + "S1ap-TypeOfError", + S1ap_TypeOfError_free, + S1ap_TypeOfError_print, + S1ap_TypeOfError_constraint, + S1ap_TypeOfError_decode_ber, + S1ap_TypeOfError_encode_der, + S1ap_TypeOfError_decode_xer, + S1ap_TypeOfError_encode_xer, + S1ap_TypeOfError_decode_uper, + S1ap_TypeOfError_encode_uper, + S1ap_TypeOfError_decode_aper, + S1ap_TypeOfError_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_TypeOfError_constr_1, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1ap_TypeOfError_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-TypeOfError.h b/lib/asn/asn1c/S1ap-TypeOfError.h new file mode 100644 index 0000000000..edc647a490 --- /dev/null +++ b/lib/asn/asn1c/S1ap-TypeOfError.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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_TYPE_descriptor_t asn_DEF_S1ap_TypeOfError; +asn_struct_free_f S1ap_TypeOfError_free; +asn_struct_print_f S1ap_TypeOfError_print; +asn_constr_check_f S1ap_TypeOfError_constraint; +ber_type_decoder_f S1ap_TypeOfError_decode_ber; +der_type_encoder_f S1ap_TypeOfError_encode_der; +xer_type_decoder_f S1ap_TypeOfError_decode_xer; +xer_type_encoder_f S1ap_TypeOfError_encode_xer; +per_type_decoder_f S1ap_TypeOfError_decode_uper; +per_type_encoder_f S1ap_TypeOfError_encode_uper; +per_type_decoder_f S1ap_TypeOfError_decode_aper; +per_type_encoder_f S1ap_TypeOfError_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_TypeOfError_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UE-HistoryInformation.c b/lib/asn/asn1c/S1ap-UE-HistoryInformation.c new file mode 100644 index 0000000000..5749e03b5f --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-HistoryInformation.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UE-HistoryInformation.h" + +static asn_per_constraints_t asn_PER_type_S1ap_UE_HistoryInformation_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_UE_HistoryInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-UE-HistoryInformation", + "S1ap-UE-HistoryInformation", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_UE_HistoryInformation_constr_1, + asn_MBR_S1ap_UE_HistoryInformation_1, + 1, /* Single element */ + &asn_SPC_S1ap_UE_HistoryInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UE-HistoryInformation.h b/lib/asn/asn1c/S1ap-UE-HistoryInformation.h new file mode 100644 index 0000000000..fa867ccaa1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-HistoryInformation.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-LastVisitedCell-Item.h" + +#endif /* _S1ap_UE_HistoryInformation_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.c b/lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.c new file mode 100644 index 0000000000..aa3f794c13 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UE-S1AP-ID-pair.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P71, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UE_S1AP_ID_pair = { + "S1ap-UE-S1AP-ID-pair", + "S1ap-UE-S1AP-ID-pair", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 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/asn/asn1c/S1ap-UE-S1AP-ID-pair.h b/lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.h new file mode 100644 index 0000000000..459acd5bf8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-S1AP-ID-pair.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_UE_S1AP_ID_pair_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UE-S1AP-IDs.c b/lib/asn/asn1c/S1ap-UE-S1AP-IDs.c new file mode 100644 index 0000000000..d947f1a269 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-S1AP-IDs.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UE-S1AP-IDs.h" + +static asn_per_constraints_t asn_PER_type_S1ap_UE_S1AP_IDs_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UE_S1AP_IDs = { + "S1ap-UE-S1AP-IDs", + "S1ap-UE-S1AP-IDs", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_UE_S1AP_IDs_constr_1, + asn_MBR_S1ap_UE_S1AP_IDs_1, + 2, /* Elements count */ + &asn_SPC_S1ap_UE_S1AP_IDs_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UE-S1AP-IDs.h b/lib/asn/asn1c/S1ap-UE-S1AP-IDs.h new file mode 100644 index 0000000000..c8af1081d1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-S1AP-IDs.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UE_S1AP_IDs_H_ +#define _S1ap_UE_S1AP_IDs_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-UE-S1AP-ID-pair.h" +#include "S1ap-MME-UE-S1AP-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_UE_S1AP_IDs_PR { + S1ap_UE_S1AP_IDs_PR_NOTHING, /* No components present */ + S1ap_UE_S1AP_IDs_PR_uE_S1AP_ID_pair, + S1ap_UE_S1AP_IDs_PR_mME_UE_S1AP_ID, + /* Extensions may appear below */ + +} S1ap_UE_S1AP_IDs_PR; + +/* S1ap-UE-S1AP-IDs */ +typedef struct S1ap_UE_S1AP_IDs { + S1ap_UE_S1AP_IDs_PR present; + union S1ap_UE_S1AP_IDs_u { + S1ap_UE_S1AP_ID_pair_t 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/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionItem.c b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionItem.c new file mode 100644 index 0000000000..dbe5aa037e --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionItem.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UE-associatedLogicalS1-ConnectionItem.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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_ProtocolExtensionContainer_5749P72, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem = { + "S1ap-UE-associatedLogicalS1-ConnectionItem", + "S1ap-UE-associatedLogicalS1-ConnectionItem", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UE_associatedLogicalS1_ConnectionItem_1, + 3, /* Elements count */ + &asn_SPC_S1ap_UE_associatedLogicalS1_ConnectionItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionItem.h b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionItem.h new file mode 100644 index 0000000000..5e6a80054c --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionItem.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 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 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_UE_associatedLogicalS1_ConnectionItem_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListRes.c b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListRes.c new file mode 100644 index 0000000000..b762a78d36 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListRes.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UE-associatedLogicalS1-ConnectionListRes.h" + +static asn_per_constraints_t asn_PER_type_S1ap_UE_associatedLogicalS1_ConnectionListRes_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1ap_UE_associatedLogicalS1_ConnectionListRes_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListRes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static 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 = { + "S1ap-UE-associatedLogicalS1-ConnectionListRes", + "S1ap-UE-associatedLogicalS1-ConnectionListRes", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_UE_associatedLogicalS1_ConnectionListRes_constr_1, + asn_MBR_S1ap_UE_associatedLogicalS1_ConnectionListRes_1, + 1, /* Single element */ + &asn_SPC_S1ap_UE_associatedLogicalS1_ConnectionListRes_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListRes.h b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListRes.h new file mode 100644 index 0000000000..455ded4880 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListRes.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolIE_Field; + +/* S1ap-UE-associatedLogicalS1-ConnectionListRes */ +typedef struct S1ap_UE_associatedLogicalS1_ConnectionListRes { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_UE_associatedLogicalS1_ConnectionListRes_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListResAck.c b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListResAck.c new file mode 100644 index 0000000000..decf8aa009 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListResAck.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UE-associatedLogicalS1-ConnectionListResAck.h" + +static asn_per_constraints_t asn_PER_type_S1ap_UE_associatedLogicalS1_ConnectionListResAck_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (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_ProtocolIE_Field_5696P0, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +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 = { + "S1ap-UE-associatedLogicalS1-ConnectionListResAck", + "S1ap-UE-associatedLogicalS1-ConnectionListResAck", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_UE_associatedLogicalS1_ConnectionListResAck_constr_1, + asn_MBR_S1ap_UE_associatedLogicalS1_ConnectionListResAck_1, + 1, /* Single element */ + &asn_SPC_S1ap_UE_associatedLogicalS1_ConnectionListResAck_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListResAck.h b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListResAck.h new file mode 100644 index 0000000000..a6cd63571d --- /dev/null +++ b/lib/asn/asn1c/S1ap-UE-associatedLogicalS1-ConnectionListResAck.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolIE_Field; + +/* S1ap-UE-associatedLogicalS1-ConnectionListResAck */ +typedef struct S1ap_UE_associatedLogicalS1_ConnectionListResAck { + A_SEQUENCE_OF(struct ProtocolIE_Field) 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 + +/* Referred external types */ +#include "ProtocolIE-Field.h" + +#endif /* _S1ap_UE_associatedLogicalS1_ConnectionListResAck_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UEAggregateMaximumBitrate.c b/lib/asn/asn1c/S1ap-UEAggregateMaximumBitrate.c new file mode 100644 index 0000000000..2228af44d9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEAggregateMaximumBitrate.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEAggregateMaximumBitrate.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "uEaggregateMaximumBitRateUL" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_UEAggregateMaximumBitrate, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P70, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UEAggregateMaximumBitrate = { + "S1ap-UEAggregateMaximumBitrate", + "S1ap-UEAggregateMaximumBitrate", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UEAggregateMaximumBitrate_1, + 3, /* Elements count */ + &asn_SPC_S1ap_UEAggregateMaximumBitrate_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEAggregateMaximumBitrate.h b/lib/asn/asn1c/S1ap-UEAggregateMaximumBitrate.h new file mode 100644 index 0000000000..50122d3d0b --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEAggregateMaximumBitrate.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-UEAggregateMaximumBitrate */ +typedef struct S1ap_UEAggregateMaximumBitrate { + S1ap_BitRate_t uEaggregateMaximumBitRateDL; + S1ap_BitRate_t uEaggregateMaximumBitRateUL; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_UEAggregateMaximumBitrate_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UECapabilityInfoIndication.c b/lib/asn/asn1c/S1ap-UECapabilityInfoIndication.c new file mode 100644 index 0000000000..a7995009b1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UECapabilityInfoIndication.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UECapabilityInfoIndication.h" + +static int +memb_s1ap_UECapabilityInfoIndication_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UECapabilityInfoIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UECapabilityInfoIndication_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UECapabilityInfoIndication_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UECapabilityInfoIndication_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UECapabilityInfoIndication_ies_specs_2 = { + sizeof(struct S1ap_UECapabilityInfoIndication__s1ap_UECapabilityInfoIndication_ies), + offsetof(struct S1ap_UECapabilityInfoIndication__s1ap_UECapabilityInfoIndication_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UECapabilityInfoIndication_ies_2 = { + "s1ap-UECapabilityInfoIndication-ies", + "s1ap-UECapabilityInfoIndication-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UECapabilityInfoIndication_ies_tags_2, + sizeof(asn_DEF_s1ap_UECapabilityInfoIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_UECapabilityInfoIndication_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UECapabilityInfoIndication_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UECapabilityInfoIndication_ies_tags_2) + /sizeof(asn_DEF_s1ap_UECapabilityInfoIndication_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UECapabilityInfoIndication_ies_constr_2, + asn_MBR_s1ap_UECapabilityInfoIndication_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UECapabilityInfoIndication_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UECapabilityInfoIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UECapabilityInfoIndication, s1ap_UECapabilityInfoIndication_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UECapabilityInfoIndication_ies_2, + memb_s1ap_UECapabilityInfoIndication_ies_constraint_1, + &asn_PER_memb_s1ap_UECapabilityInfoIndication_ies_constr_2, + 0, + "s1ap-UECapabilityInfoIndication-ies" + }, +}; +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 } /* s1ap-UECapabilityInfoIndication-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UECapabilityInfoIndication = { + "S1ap-UECapabilityInfoIndication", + "S1ap-UECapabilityInfoIndication", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UECapabilityInfoIndication_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UECapabilityInfoIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UECapabilityInfoIndication.h b/lib/asn/asn1c/S1ap-UECapabilityInfoIndication.h new file mode 100644 index 0000000000..93557ff040 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UECapabilityInfoIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UECapabilityInfoIndication_H_ +#define _S1ap_UECapabilityInfoIndication_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UECapabilityInfoIndication */ +typedef struct S1ap_UECapabilityInfoIndication { + struct S1ap_UECapabilityInfoIndication__s1ap_UECapabilityInfoIndication_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UECapabilityInfoIndication_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UECapabilityInfoIndication_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UEContextModificationFailure.c b/lib/asn/asn1c/S1ap-UEContextModificationFailure.c new file mode 100644 index 0000000000..914e80ccc7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextModificationFailure.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEContextModificationFailure.h" + +static int +memb_s1ap_UEContextModificationFailure_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UEContextModificationFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UEContextModificationFailure_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UEContextModificationFailure_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UEContextModificationFailure_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UEContextModificationFailure_ies_specs_2 = { + sizeof(struct S1ap_UEContextModificationFailure__s1ap_UEContextModificationFailure_ies), + offsetof(struct S1ap_UEContextModificationFailure__s1ap_UEContextModificationFailure_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UEContextModificationFailure_ies_2 = { + "s1ap-UEContextModificationFailure-ies", + "s1ap-UEContextModificationFailure-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UEContextModificationFailure_ies_tags_2, + sizeof(asn_DEF_s1ap_UEContextModificationFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextModificationFailure_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UEContextModificationFailure_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UEContextModificationFailure_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextModificationFailure_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UEContextModificationFailure_ies_constr_2, + asn_MBR_s1ap_UEContextModificationFailure_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UEContextModificationFailure_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UEContextModificationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UEContextModificationFailure, s1ap_UEContextModificationFailure_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UEContextModificationFailure_ies_2, + memb_s1ap_UEContextModificationFailure_ies_constraint_1, + &asn_PER_memb_s1ap_UEContextModificationFailure_ies_constr_2, + 0, + "s1ap-UEContextModificationFailure-ies" + }, +}; +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 } /* s1ap-UEContextModificationFailure-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UEContextModificationFailure = { + "S1ap-UEContextModificationFailure", + "S1ap-UEContextModificationFailure", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UEContextModificationFailure_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UEContextModificationFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEContextModificationFailure.h b/lib/asn/asn1c/S1ap-UEContextModificationFailure.h new file mode 100644 index 0000000000..17fb6ad957 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextModificationFailure.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UEContextModificationFailure_H_ +#define _S1ap_UEContextModificationFailure_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UEContextModificationFailure */ +typedef struct S1ap_UEContextModificationFailure { + struct S1ap_UEContextModificationFailure__s1ap_UEContextModificationFailure_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UEContextModificationFailure_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UEContextModificationFailure_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UEContextModificationRequest.c b/lib/asn/asn1c/S1ap-UEContextModificationRequest.c new file mode 100644 index 0000000000..bab0c419b8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextModificationRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEContextModificationRequest.h" + +static int +memb_s1ap_UEContextModificationRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UEContextModificationRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UEContextModificationRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UEContextModificationRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UEContextModificationRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UEContextModificationRequest_ies_specs_2 = { + sizeof(struct S1ap_UEContextModificationRequest__s1ap_UEContextModificationRequest_ies), + offsetof(struct S1ap_UEContextModificationRequest__s1ap_UEContextModificationRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UEContextModificationRequest_ies_2 = { + "s1ap-UEContextModificationRequest-ies", + "s1ap-UEContextModificationRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UEContextModificationRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_UEContextModificationRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextModificationRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UEContextModificationRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UEContextModificationRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextModificationRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UEContextModificationRequest_ies_constr_2, + asn_MBR_s1ap_UEContextModificationRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UEContextModificationRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UEContextModificationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UEContextModificationRequest, s1ap_UEContextModificationRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UEContextModificationRequest_ies_2, + memb_s1ap_UEContextModificationRequest_ies_constraint_1, + &asn_PER_memb_s1ap_UEContextModificationRequest_ies_constr_2, + 0, + "s1ap-UEContextModificationRequest-ies" + }, +}; +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 } /* s1ap-UEContextModificationRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UEContextModificationRequest = { + "S1ap-UEContextModificationRequest", + "S1ap-UEContextModificationRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UEContextModificationRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UEContextModificationRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEContextModificationRequest.h b/lib/asn/asn1c/S1ap-UEContextModificationRequest.h new file mode 100644 index 0000000000..faed1c06f9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextModificationRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UEContextModificationRequest_H_ +#define _S1ap_UEContextModificationRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UEContextModificationRequest */ +typedef struct S1ap_UEContextModificationRequest { + struct S1ap_UEContextModificationRequest__s1ap_UEContextModificationRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UEContextModificationRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UEContextModificationRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UEContextModificationResponse.c b/lib/asn/asn1c/S1ap-UEContextModificationResponse.c new file mode 100644 index 0000000000..a76b638271 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextModificationResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEContextModificationResponse.h" + +static int +memb_s1ap_UEContextModificationResponse_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UEContextModificationResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UEContextModificationResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UEContextModificationResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UEContextModificationResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UEContextModificationResponse_ies_specs_2 = { + sizeof(struct S1ap_UEContextModificationResponse__s1ap_UEContextModificationResponse_ies), + offsetof(struct S1ap_UEContextModificationResponse__s1ap_UEContextModificationResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UEContextModificationResponse_ies_2 = { + "s1ap-UEContextModificationResponse-ies", + "s1ap-UEContextModificationResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UEContextModificationResponse_ies_tags_2, + sizeof(asn_DEF_s1ap_UEContextModificationResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextModificationResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UEContextModificationResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UEContextModificationResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextModificationResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UEContextModificationResponse_ies_constr_2, + asn_MBR_s1ap_UEContextModificationResponse_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UEContextModificationResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UEContextModificationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UEContextModificationResponse, s1ap_UEContextModificationResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UEContextModificationResponse_ies_2, + memb_s1ap_UEContextModificationResponse_ies_constraint_1, + &asn_PER_memb_s1ap_UEContextModificationResponse_ies_constr_2, + 0, + "s1ap-UEContextModificationResponse-ies" + }, +}; +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 } /* s1ap-UEContextModificationResponse-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UEContextModificationResponse = { + "S1ap-UEContextModificationResponse", + "S1ap-UEContextModificationResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UEContextModificationResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UEContextModificationResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEContextModificationResponse.h b/lib/asn/asn1c/S1ap-UEContextModificationResponse.h new file mode 100644 index 0000000000..c6e353973f --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextModificationResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UEContextModificationResponse_H_ +#define _S1ap_UEContextModificationResponse_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UEContextModificationResponse */ +typedef struct S1ap_UEContextModificationResponse { + struct S1ap_UEContextModificationResponse__s1ap_UEContextModificationResponse_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UEContextModificationResponse_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UEContextModificationResponse_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UEContextReleaseCommand.c b/lib/asn/asn1c/S1ap-UEContextReleaseCommand.c new file mode 100644 index 0000000000..632bb7b107 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextReleaseCommand.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEContextReleaseCommand.h" + +static int +memb_s1ap_UEContextReleaseCommand_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UEContextReleaseCommand_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UEContextReleaseCommand_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UEContextReleaseCommand_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UEContextReleaseCommand_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UEContextReleaseCommand_ies_specs_2 = { + sizeof(struct S1ap_UEContextReleaseCommand__s1ap_UEContextReleaseCommand_ies), + offsetof(struct S1ap_UEContextReleaseCommand__s1ap_UEContextReleaseCommand_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UEContextReleaseCommand_ies_2 = { + "s1ap-UEContextReleaseCommand-ies", + "s1ap-UEContextReleaseCommand-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UEContextReleaseCommand_ies_tags_2, + sizeof(asn_DEF_s1ap_UEContextReleaseCommand_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextReleaseCommand_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UEContextReleaseCommand_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UEContextReleaseCommand_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextReleaseCommand_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UEContextReleaseCommand_ies_constr_2, + asn_MBR_s1ap_UEContextReleaseCommand_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UEContextReleaseCommand_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UEContextReleaseCommand_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UEContextReleaseCommand, s1ap_UEContextReleaseCommand_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UEContextReleaseCommand_ies_2, + memb_s1ap_UEContextReleaseCommand_ies_constraint_1, + &asn_PER_memb_s1ap_UEContextReleaseCommand_ies_constr_2, + 0, + "s1ap-UEContextReleaseCommand-ies" + }, +}; +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 } /* s1ap-UEContextReleaseCommand-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UEContextReleaseCommand = { + "S1ap-UEContextReleaseCommand", + "S1ap-UEContextReleaseCommand", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UEContextReleaseCommand_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UEContextReleaseCommand_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEContextReleaseCommand.h b/lib/asn/asn1c/S1ap-UEContextReleaseCommand.h new file mode 100644 index 0000000000..368a6c6434 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextReleaseCommand.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UEContextReleaseCommand_H_ +#define _S1ap_UEContextReleaseCommand_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UEContextReleaseCommand */ +typedef struct S1ap_UEContextReleaseCommand { + struct S1ap_UEContextReleaseCommand__s1ap_UEContextReleaseCommand_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UEContextReleaseCommand_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UEContextReleaseCommand_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UEContextReleaseComplete.c b/lib/asn/asn1c/S1ap-UEContextReleaseComplete.c new file mode 100644 index 0000000000..ee1ff6fbec --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextReleaseComplete.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEContextReleaseComplete.h" + +static int +memb_s1ap_UEContextReleaseComplete_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UEContextReleaseComplete_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UEContextReleaseComplete_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UEContextReleaseComplete_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UEContextReleaseComplete_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UEContextReleaseComplete_ies_specs_2 = { + sizeof(struct S1ap_UEContextReleaseComplete__s1ap_UEContextReleaseComplete_ies), + offsetof(struct S1ap_UEContextReleaseComplete__s1ap_UEContextReleaseComplete_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UEContextReleaseComplete_ies_2 = { + "s1ap-UEContextReleaseComplete-ies", + "s1ap-UEContextReleaseComplete-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UEContextReleaseComplete_ies_tags_2, + sizeof(asn_DEF_s1ap_UEContextReleaseComplete_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextReleaseComplete_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UEContextReleaseComplete_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UEContextReleaseComplete_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextReleaseComplete_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UEContextReleaseComplete_ies_constr_2, + asn_MBR_s1ap_UEContextReleaseComplete_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UEContextReleaseComplete_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UEContextReleaseComplete_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UEContextReleaseComplete, s1ap_UEContextReleaseComplete_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UEContextReleaseComplete_ies_2, + memb_s1ap_UEContextReleaseComplete_ies_constraint_1, + &asn_PER_memb_s1ap_UEContextReleaseComplete_ies_constr_2, + 0, + "s1ap-UEContextReleaseComplete-ies" + }, +}; +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 } /* s1ap-UEContextReleaseComplete-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UEContextReleaseComplete = { + "S1ap-UEContextReleaseComplete", + "S1ap-UEContextReleaseComplete", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UEContextReleaseComplete_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UEContextReleaseComplete_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEContextReleaseComplete.h b/lib/asn/asn1c/S1ap-UEContextReleaseComplete.h new file mode 100644 index 0000000000..4cf53bde73 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextReleaseComplete.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UEContextReleaseComplete_H_ +#define _S1ap_UEContextReleaseComplete_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UEContextReleaseComplete */ +typedef struct S1ap_UEContextReleaseComplete { + struct S1ap_UEContextReleaseComplete__s1ap_UEContextReleaseComplete_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UEContextReleaseComplete_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UEContextReleaseComplete_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UEContextReleaseRequest.c b/lib/asn/asn1c/S1ap-UEContextReleaseRequest.c new file mode 100644 index 0000000000..06221d2080 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextReleaseRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEContextReleaseRequest.h" + +static int +memb_s1ap_UEContextReleaseRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UEContextReleaseRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UEContextReleaseRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UEContextReleaseRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UEContextReleaseRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UEContextReleaseRequest_ies_specs_2 = { + sizeof(struct S1ap_UEContextReleaseRequest__s1ap_UEContextReleaseRequest_ies), + offsetof(struct S1ap_UEContextReleaseRequest__s1ap_UEContextReleaseRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UEContextReleaseRequest_ies_2 = { + "s1ap-UEContextReleaseRequest-ies", + "s1ap-UEContextReleaseRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UEContextReleaseRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_UEContextReleaseRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextReleaseRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UEContextReleaseRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UEContextReleaseRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_UEContextReleaseRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UEContextReleaseRequest_ies_constr_2, + asn_MBR_s1ap_UEContextReleaseRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UEContextReleaseRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UEContextReleaseRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UEContextReleaseRequest, s1ap_UEContextReleaseRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UEContextReleaseRequest_ies_2, + memb_s1ap_UEContextReleaseRequest_ies_constraint_1, + &asn_PER_memb_s1ap_UEContextReleaseRequest_ies_constr_2, + 0, + "s1ap-UEContextReleaseRequest-ies" + }, +}; +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 } /* s1ap-UEContextReleaseRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UEContextReleaseRequest = { + "S1ap-UEContextReleaseRequest", + "S1ap-UEContextReleaseRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UEContextReleaseRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UEContextReleaseRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEContextReleaseRequest.h b/lib/asn/asn1c/S1ap-UEContextReleaseRequest.h new file mode 100644 index 0000000000..9890c2d807 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEContextReleaseRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UEContextReleaseRequest_H_ +#define _S1ap_UEContextReleaseRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UEContextReleaseRequest */ +typedef struct S1ap_UEContextReleaseRequest { + struct S1ap_UEContextReleaseRequest__s1ap_UEContextReleaseRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UEContextReleaseRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UEContextReleaseRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UEIdentityIndexValue.c b/lib/asn/asn1c/S1ap-UEIdentityIndexValue.c new file mode 100644 index 0000000000..a9b7006856 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEIdentityIndexValue.c @@ -0,0 +1,172 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEIdentityIndexValue.h" + +int +S1ap_UEIdentityIndexValue_constraint(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 == 10LL)) { + /* 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 void +S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_BIT_STRING.free_struct; + td->print_struct = asn_DEF_BIT_STRING.print_struct; + td->check_constraints = asn_DEF_BIT_STRING.check_constraints; + td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder; + td->der_encoder = asn_DEF_BIT_STRING.der_encoder; + td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder; + td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder; + td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder; + td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder; + td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder; + td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_BIT_STRING.per_constraints; + td->elements = asn_DEF_BIT_STRING.elements; + td->elements_count = asn_DEF_BIT_STRING.elements_count; + td->specifics = asn_DEF_BIT_STRING.specifics; +} + +void +S1ap_UEIdentityIndexValue_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_UEIdentityIndexValue_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_UEIdentityIndexValue_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_UEIdentityIndexValue_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_UEIdentityIndexValue_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_UEIdentityIndexValue_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_UEIdentityIndexValue_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_UEIdentityIndexValue_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_UEIdentityIndexValue_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_UEIdentityIndexValue_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_UEIdentityIndexValue_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_UEIdentityIndexValue_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 10l, 10l } /* (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 = { + "S1ap-UEIdentityIndexValue", + "S1ap-UEIdentityIndexValue", + S1ap_UEIdentityIndexValue_free, + S1ap_UEIdentityIndexValue_print, + S1ap_UEIdentityIndexValue_constraint, + S1ap_UEIdentityIndexValue_decode_ber, + S1ap_UEIdentityIndexValue_encode_der, + S1ap_UEIdentityIndexValue_decode_xer, + S1ap_UEIdentityIndexValue_encode_xer, + S1ap_UEIdentityIndexValue_decode_uper, + S1ap_UEIdentityIndexValue_encode_uper, + S1ap_UEIdentityIndexValue_decode_aper, + S1ap_UEIdentityIndexValue_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_UEIdentityIndexValue_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEIdentityIndexValue.h b/lib/asn/asn1c/S1ap-UEIdentityIndexValue.h new file mode 100644 index 0000000000..c47a25cca3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEIdentityIndexValue.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-UEPagingID.c b/lib/asn/asn1c/S1ap-UEPagingID.c new file mode 100644 index 0000000000..33a28079fd --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEPagingID.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UEPagingID.h" + +static asn_per_constraints_t asn_PER_type_S1ap_UEPagingID_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (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_NOFLAGS, 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UEPagingID = { + "S1ap-UEPagingID", + "S1ap-UEPagingID", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_UEPagingID_constr_1, + asn_MBR_S1ap_UEPagingID_1, + 2, /* Elements count */ + &asn_SPC_S1ap_UEPagingID_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UEPagingID.h b/lib/asn/asn1c/S1ap-UEPagingID.h new file mode 100644 index 0000000000..d66f143eda --- /dev/null +++ b/lib/asn/asn1c/S1ap-UEPagingID.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UEPagingID_H_ +#define _S1ap_UEPagingID_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-S-TMSI.h" +#include "S1ap-IMSI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_UEPagingID_PR { + S1ap_UEPagingID_PR_NOTHING, /* No components present */ + S1ap_UEPagingID_PR_s_TMSI, + S1ap_UEPagingID_PR_iMSI, + /* Extensions may appear below */ + +} S1ap_UEPagingID_PR; + +/* S1ap-UEPagingID */ +typedef struct S1ap_UEPagingID { + S1ap_UEPagingID_PR present; + union S1ap_UEPagingID_u { + S1ap_S_TMSI_t 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/asn/asn1c/S1ap-UERadioCapability.c b/lib/asn/asn1c/S1ap-UERadioCapability.c new file mode 100644 index 0000000000..50d4fe2f8f --- /dev/null +++ b/lib/asn/asn1c/S1ap-UERadioCapability.c @@ -0,0 +1,144 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UERadioCapability.h" + +int +S1ap_UERadioCapability_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + /* Replace with underlying type checker */ + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static void +S1ap_UERadioCapability_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_UERadioCapability_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_UERadioCapability_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_UERadioCapability_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_UERadioCapability_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_UERadioCapability_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_UERadioCapability_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_UERadioCapability_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_UERadioCapability_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_UERadioCapability_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_UERadioCapability_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_UERadioCapability_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +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 = { + "S1ap-UERadioCapability", + "S1ap-UERadioCapability", + S1ap_UERadioCapability_free, + S1ap_UERadioCapability_print, + S1ap_UERadioCapability_constraint, + S1ap_UERadioCapability_decode_ber, + S1ap_UERadioCapability_encode_der, + S1ap_UERadioCapability_decode_xer, + S1ap_UERadioCapability_encode_xer, + S1ap_UERadioCapability_decode_uper, + S1ap_UERadioCapability_encode_uper, + S1ap_UERadioCapability_decode_aper, + S1ap_UERadioCapability_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-UERadioCapability.h b/lib/asn/asn1c/S1ap-UERadioCapability.h new file mode 100644 index 0000000000..c39d3cfdb2 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UERadioCapability.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-UESecurityCapabilities.c b/lib/asn/asn1c/S1ap-UESecurityCapabilities.c new file mode 100644 index 0000000000..1bb4881583 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UESecurityCapabilities.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UESecurityCapabilities.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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "integrityProtectionAlgorithms" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_UESecurityCapabilities, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P73, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ + 2, /* Start extensions */ + 4 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UESecurityCapabilities = { + "S1ap-UESecurityCapabilities", + "S1ap-UESecurityCapabilities", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UESecurityCapabilities_1, + 3, /* Elements count */ + &asn_SPC_S1ap_UESecurityCapabilities_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UESecurityCapabilities.h b/lib/asn/asn1c/S1ap-UESecurityCapabilities.h new file mode 100644 index 0000000000..fd16e16b53 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UESecurityCapabilities.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-UESecurityCapabilities */ +typedef struct S1ap_UESecurityCapabilities { + S1ap_EncryptionAlgorithms_t encryptionAlgorithms; + S1ap_IntegrityProtectionAlgorithms_t integrityProtectionAlgorithms; + struct 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 + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_UESecurityCapabilities_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UnsuccessfulOutcome.c b/lib/asn/asn1c/S1ap-UnsuccessfulOutcome.c new file mode 100644 index 0000000000..425b1ee4bb --- /dev/null +++ b/lib/asn/asn1c/S1ap-UnsuccessfulOutcome.c @@ -0,0 +1,160 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UnsuccessfulOutcome.h" + +static int +memb_procedureCode_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long long *)sptr; + + if((value >= 0LL && value <= 255LL)) { + /* 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_criticality_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->check_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 GCC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 GCC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 GCC_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_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, + memb_procedureCode_constraint_1, + &asn_PER_memb_procedureCode_constr_2, + 0, + "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, + memb_criticality_constraint_1, + &asn_PER_memb_criticality_constr_3, + 0, + "criticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UnsuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + memb_value_constraint_1, + &asn_PER_memb_value_constr_4, + 0, + "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 */ +}; +static 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, /* Start extensions */ + -1 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UnsuccessfulOutcome = { + "S1ap-UnsuccessfulOutcome", + "S1ap-UnsuccessfulOutcome", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UnsuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_S1ap_UnsuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UnsuccessfulOutcome.h b/lib/asn/asn1c/S1ap-UnsuccessfulOutcome.h new file mode 100644 index 0000000000..846bb26ee7 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UnsuccessfulOutcome.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UnsuccessfulOutcome_H_ +#define _S1ap_UnsuccessfulOutcome_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ProcedureCode.h" +#include "S1ap-Criticality.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1ap-UnsuccessfulOutcome */ +typedef struct S1ap_UnsuccessfulOutcome { + S1ap_ProcedureCode_t procedureCode; + S1ap_Criticality_t criticality; + ANY_t 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; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1ap_UnsuccessfulOutcome_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UplinkNASTransport.c b/lib/asn/asn1c/S1ap-UplinkNASTransport.c new file mode 100644 index 0000000000..6f9da3c0d9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UplinkNASTransport.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UplinkNASTransport.h" + +static int +memb_s1ap_UplinkNASTransport_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UplinkNASTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UplinkNASTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UplinkNASTransport_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UplinkNASTransport_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UplinkNASTransport_ies_specs_2 = { + sizeof(struct S1ap_UplinkNASTransport__s1ap_UplinkNASTransport_ies), + offsetof(struct S1ap_UplinkNASTransport__s1ap_UplinkNASTransport_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UplinkNASTransport_ies_2 = { + "s1ap-UplinkNASTransport-ies", + "s1ap-UplinkNASTransport-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UplinkNASTransport_ies_tags_2, + sizeof(asn_DEF_s1ap_UplinkNASTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_UplinkNASTransport_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UplinkNASTransport_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UplinkNASTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_UplinkNASTransport_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UplinkNASTransport_ies_constr_2, + asn_MBR_s1ap_UplinkNASTransport_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UplinkNASTransport_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UplinkNASTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UplinkNASTransport, s1ap_UplinkNASTransport_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UplinkNASTransport_ies_2, + memb_s1ap_UplinkNASTransport_ies_constraint_1, + &asn_PER_memb_s1ap_UplinkNASTransport_ies_constr_2, + 0, + "s1ap-UplinkNASTransport-ies" + }, +}; +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 } /* s1ap-UplinkNASTransport-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UplinkNASTransport = { + "S1ap-UplinkNASTransport", + "S1ap-UplinkNASTransport", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UplinkNASTransport_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UplinkNASTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UplinkNASTransport.h b/lib/asn/asn1c/S1ap-UplinkNASTransport.h new file mode 100644 index 0000000000..aace979796 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UplinkNASTransport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UplinkNASTransport_H_ +#define _S1ap_UplinkNASTransport_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UplinkNASTransport */ +typedef struct S1ap_UplinkNASTransport { + struct S1ap_UplinkNASTransport__s1ap_UplinkNASTransport_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UplinkNASTransport_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UplinkNASTransport_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UplinkNonUEAssociatedLPPaTransport.c b/lib/asn/asn1c/S1ap-UplinkNonUEAssociatedLPPaTransport.c new file mode 100644 index 0000000000..5fc28c2c31 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UplinkNonUEAssociatedLPPaTransport.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UplinkNonUEAssociatedLPPaTransport.h" + +static int +memb_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_specs_2 = { + sizeof(struct S1ap_UplinkNonUEAssociatedLPPaTransport__s1ap_UplinkNonUEAssociatedLPPaTransport_ies), + offsetof(struct S1ap_UplinkNonUEAssociatedLPPaTransport__s1ap_UplinkNonUEAssociatedLPPaTransport_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_2 = { + "s1ap-UplinkNonUEAssociatedLPPaTransport-ies", + "s1ap-UplinkNonUEAssociatedLPPaTransport-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_tags_2, + sizeof(asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_constr_2, + asn_MBR_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UplinkNonUEAssociatedLPPaTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UplinkNonUEAssociatedLPPaTransport, s1ap_UplinkNonUEAssociatedLPPaTransport_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_2, + memb_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_constraint_1, + &asn_PER_memb_s1ap_UplinkNonUEAssociatedLPPaTransport_ies_constr_2, + 0, + "s1ap-UplinkNonUEAssociatedLPPaTransport-ies" + }, +}; +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 } /* s1ap-UplinkNonUEAssociatedLPPaTransport-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UplinkNonUEAssociatedLPPaTransport = { + "S1ap-UplinkNonUEAssociatedLPPaTransport", + "S1ap-UplinkNonUEAssociatedLPPaTransport", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UplinkNonUEAssociatedLPPaTransport_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UplinkNonUEAssociatedLPPaTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UplinkNonUEAssociatedLPPaTransport.h b/lib/asn/asn1c/S1ap-UplinkNonUEAssociatedLPPaTransport.h new file mode 100644 index 0000000000..6c1c6fe14f --- /dev/null +++ b/lib/asn/asn1c/S1ap-UplinkNonUEAssociatedLPPaTransport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UplinkNonUEAssociatedLPPaTransport_H_ +#define _S1ap_UplinkNonUEAssociatedLPPaTransport_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UplinkNonUEAssociatedLPPaTransport */ +typedef struct S1ap_UplinkNonUEAssociatedLPPaTransport { + struct S1ap_UplinkNonUEAssociatedLPPaTransport__s1ap_UplinkNonUEAssociatedLPPaTransport_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UplinkNonUEAssociatedLPPaTransport_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UplinkNonUEAssociatedLPPaTransport_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UplinkS1cdma2000tunneling.c b/lib/asn/asn1c/S1ap-UplinkS1cdma2000tunneling.c new file mode 100644 index 0000000000..4b761f337a --- /dev/null +++ b/lib/asn/asn1c/S1ap-UplinkS1cdma2000tunneling.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UplinkS1cdma2000tunneling.h" + +static int +memb_s1ap_UplinkS1cdma2000tunneling_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UplinkS1cdma2000tunneling_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UplinkS1cdma2000tunneling_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UplinkS1cdma2000tunneling_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UplinkS1cdma2000tunneling_ies_specs_2 = { + sizeof(struct S1ap_UplinkS1cdma2000tunneling__s1ap_UplinkS1cdma2000tunneling_ies), + offsetof(struct S1ap_UplinkS1cdma2000tunneling__s1ap_UplinkS1cdma2000tunneling_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_2 = { + "s1ap-UplinkS1cdma2000tunneling-ies", + "s1ap-UplinkS1cdma2000tunneling-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_tags_2, + sizeof(asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_tags_2) + /sizeof(asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_tags_2) + /sizeof(asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UplinkS1cdma2000tunneling_ies_constr_2, + asn_MBR_s1ap_UplinkS1cdma2000tunneling_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UplinkS1cdma2000tunneling_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UplinkS1cdma2000tunneling_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UplinkS1cdma2000tunneling, s1ap_UplinkS1cdma2000tunneling_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UplinkS1cdma2000tunneling_ies_2, + memb_s1ap_UplinkS1cdma2000tunneling_ies_constraint_1, + &asn_PER_memb_s1ap_UplinkS1cdma2000tunneling_ies_constr_2, + 0, + "s1ap-UplinkS1cdma2000tunneling-ies" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1ap_UplinkS1cdma2000tunneling_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1ap_UplinkS1cdma2000tunneling_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* s1ap-UplinkS1cdma2000tunneling-ies */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1ap_UplinkS1cdma2000tunneling_specs_1 = { + sizeof(struct S1ap_UplinkS1cdma2000tunneling), + offsetof(struct S1ap_UplinkS1cdma2000tunneling, _asn_ctx), + asn_MAP_S1ap_UplinkS1cdma2000tunneling_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UplinkS1cdma2000tunneling = { + "S1ap-UplinkS1cdma2000tunneling", + "S1ap-UplinkS1cdma2000tunneling", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_S1ap_UplinkS1cdma2000tunneling_tags_1, + sizeof(asn_DEF_S1ap_UplinkS1cdma2000tunneling_tags_1) + /sizeof(asn_DEF_S1ap_UplinkS1cdma2000tunneling_tags_1[0]), /* 1 */ + asn_DEF_S1ap_UplinkS1cdma2000tunneling_tags_1, /* Same as above */ + sizeof(asn_DEF_S1ap_UplinkS1cdma2000tunneling_tags_1) + /sizeof(asn_DEF_S1ap_UplinkS1cdma2000tunneling_tags_1[0]), /* 1 */ + 0, /* No PER visible constraints */ + asn_MBR_S1ap_UplinkS1cdma2000tunneling_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UplinkS1cdma2000tunneling_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UplinkS1cdma2000tunneling.h b/lib/asn/asn1c/S1ap-UplinkS1cdma2000tunneling.h new file mode 100644 index 0000000000..00e9b7d5a4 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UplinkS1cdma2000tunneling.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UplinkS1cdma2000tunneling_H_ +#define _S1ap_UplinkS1cdma2000tunneling_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UplinkS1cdma2000tunneling */ +typedef struct S1ap_UplinkS1cdma2000tunneling { + struct S1ap_UplinkS1cdma2000tunneling__s1ap_UplinkS1cdma2000tunneling_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UplinkS1cdma2000tunneling_ies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1ap_UplinkS1cdma2000tunneling_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1ap_UplinkS1cdma2000tunneling; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UplinkS1cdma2000tunneling_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-UplinkUEAssociatedLPPaTransport.c b/lib/asn/asn1c/S1ap-UplinkUEAssociatedLPPaTransport.c new file mode 100644 index 0000000000..0f2b4efbd1 --- /dev/null +++ b/lib/asn/asn1c/S1ap-UplinkUEAssociatedLPPaTransport.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-UplinkUEAssociatedLPPaTransport.h" + +static int +memb_s1ap_UplinkUEAssociatedLPPaTransport_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_UplinkUEAssociatedLPPaTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_UplinkUEAssociatedLPPaTransport_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_UplinkUEAssociatedLPPaTransport_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_UplinkUEAssociatedLPPaTransport_ies_specs_2 = { + sizeof(struct S1ap_UplinkUEAssociatedLPPaTransport__s1ap_UplinkUEAssociatedLPPaTransport_ies), + offsetof(struct S1ap_UplinkUEAssociatedLPPaTransport__s1ap_UplinkUEAssociatedLPPaTransport_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_2 = { + "s1ap-UplinkUEAssociatedLPPaTransport-ies", + "s1ap-UplinkUEAssociatedLPPaTransport-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_tags_2, + sizeof(asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_tags_2) + /sizeof(asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_UplinkUEAssociatedLPPaTransport_ies_constr_2, + asn_MBR_s1ap_UplinkUEAssociatedLPPaTransport_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_UplinkUEAssociatedLPPaTransport_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_UplinkUEAssociatedLPPaTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_UplinkUEAssociatedLPPaTransport, s1ap_UplinkUEAssociatedLPPaTransport_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_UplinkUEAssociatedLPPaTransport_ies_2, + memb_s1ap_UplinkUEAssociatedLPPaTransport_ies_constraint_1, + &asn_PER_memb_s1ap_UplinkUEAssociatedLPPaTransport_ies_constr_2, + 0, + "s1ap-UplinkUEAssociatedLPPaTransport-ies" + }, +}; +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 } /* s1ap-UplinkUEAssociatedLPPaTransport-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport = { + "S1ap-UplinkUEAssociatedLPPaTransport", + "S1ap-UplinkUEAssociatedLPPaTransport", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_UplinkUEAssociatedLPPaTransport_1, + 1, /* Elements count */ + &asn_SPC_S1ap_UplinkUEAssociatedLPPaTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-UplinkUEAssociatedLPPaTransport.h b/lib/asn/asn1c/S1ap-UplinkUEAssociatedLPPaTransport.h new file mode 100644 index 0000000000..4c14dab76a --- /dev/null +++ b/lib/asn/asn1c/S1ap-UplinkUEAssociatedLPPaTransport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_UplinkUEAssociatedLPPaTransport_H_ +#define _S1ap_UplinkUEAssociatedLPPaTransport_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-UplinkUEAssociatedLPPaTransport */ +typedef struct S1ap_UplinkUEAssociatedLPPaTransport { + struct S1ap_UplinkUEAssociatedLPPaTransport__s1ap_UplinkUEAssociatedLPPaTransport_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_UplinkUEAssociatedLPPaTransport_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_UplinkUEAssociatedLPPaTransport_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-WarningAreaList.c b/lib/asn/asn1c/S1ap-WarningAreaList.c new file mode 100644 index 0000000000..3d95139b9f --- /dev/null +++ b/lib/asn/asn1c/S1ap-WarningAreaList.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-WarningAreaList.h" + +static asn_per_constraints_t asn_PER_type_S1ap_WarningAreaList_constr_1 GCC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (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_NOFLAGS, 0, offsetof(struct S1ap_WarningAreaList, choice.cellIDList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_ECGIList, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "cellIDList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_WarningAreaList, choice.trackingAreaListforWarning), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_TAIListforWarning, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "trackingAreaListforWarning" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1ap_WarningAreaList, choice.emergencyAreaIDList), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1ap_EmergencyAreaIDList, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_WarningAreaList = { + "S1ap-WarningAreaList", + "S1ap-WarningAreaList", + CHOICE_free, + CHOICE_print, + CHOICE_constraint, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, + CHOICE_outmost_tag, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + &asn_PER_type_S1ap_WarningAreaList_constr_1, + asn_MBR_S1ap_WarningAreaList_1, + 3, /* Elements count */ + &asn_SPC_S1ap_WarningAreaList_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-WarningAreaList.h b/lib/asn/asn1c/S1ap-WarningAreaList.h new file mode 100644 index 0000000000..27c392c372 --- /dev/null +++ b/lib/asn/asn1c/S1ap-WarningAreaList.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_WarningAreaList_H_ +#define _S1ap_WarningAreaList_H_ + + +#include + +/* Including external dependencies */ +#include "S1ap-ECGIList.h" +#include "S1ap-TAIListforWarning.h" +#include "S1ap-EmergencyAreaIDList.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1ap_WarningAreaList_PR { + S1ap_WarningAreaList_PR_NOTHING, /* No components present */ + S1ap_WarningAreaList_PR_cellIDList, + S1ap_WarningAreaList_PR_trackingAreaListforWarning, + S1ap_WarningAreaList_PR_emergencyAreaIDList, + /* Extensions may appear below */ + +} S1ap_WarningAreaList_PR; + +/* S1ap-WarningAreaList */ +typedef struct S1ap_WarningAreaList { + S1ap_WarningAreaList_PR present; + union S1ap_WarningAreaList_u { + S1ap_ECGIList_t cellIDList; + S1ap_TAIListforWarning_t trackingAreaListforWarning; + S1ap_EmergencyAreaIDList_t 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/asn/asn1c/S1ap-WarningMessageContents.c b/lib/asn/asn1c/S1ap-WarningMessageContents.c new file mode 100644 index 0000000000..507621e42c --- /dev/null +++ b/lib/asn/asn1c/S1ap-WarningMessageContents.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-WarningMessageContents.h" + +int +S1ap_WarningMessageContents_constraint(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 >= 1LL && size <= 9600LL)) { + /* 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 void +S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_WarningMessageContents_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_WarningMessageContents_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningMessageContents_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_WarningMessageContents_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningMessageContents_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_WarningMessageContents_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningMessageContents_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_WarningMessageContents_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_WarningMessageContents_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_WarningMessageContents_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_WarningMessageContents_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_WarningMessageContents_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1l, 9600l } /* (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 = { + "S1ap-WarningMessageContents", + "S1ap-WarningMessageContents", + S1ap_WarningMessageContents_free, + S1ap_WarningMessageContents_print, + S1ap_WarningMessageContents_constraint, + S1ap_WarningMessageContents_decode_ber, + S1ap_WarningMessageContents_encode_der, + S1ap_WarningMessageContents_decode_xer, + S1ap_WarningMessageContents_encode_xer, + S1ap_WarningMessageContents_decode_uper, + S1ap_WarningMessageContents_encode_uper, + S1ap_WarningMessageContents_decode_aper, + S1ap_WarningMessageContents_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_WarningMessageContents_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-WarningMessageContents.h b/lib/asn/asn1c/S1ap-WarningMessageContents.h new file mode 100644 index 0000000000..b51f4de13b --- /dev/null +++ b/lib/asn/asn1c/S1ap-WarningMessageContents.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-WarningSecurityInfo.c b/lib/asn/asn1c/S1ap-WarningSecurityInfo.c new file mode 100644 index 0000000000..ef09769763 --- /dev/null +++ b/lib/asn/asn1c/S1ap-WarningSecurityInfo.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-WarningSecurityInfo.h" + +int +S1ap_WarningSecurityInfo_constraint(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 == 50LL)) { + /* 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 void +S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_WarningSecurityInfo_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_WarningSecurityInfo_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningSecurityInfo_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_WarningSecurityInfo_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningSecurityInfo_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_WarningSecurityInfo_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningSecurityInfo_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_WarningSecurityInfo_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_WarningSecurityInfo_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_WarningSecurityInfo_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_WarningSecurityInfo_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_WarningSecurityInfo_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 50l, 50l } /* (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 = { + "S1ap-WarningSecurityInfo", + "S1ap-WarningSecurityInfo", + S1ap_WarningSecurityInfo_free, + S1ap_WarningSecurityInfo_print, + S1ap_WarningSecurityInfo_constraint, + S1ap_WarningSecurityInfo_decode_ber, + S1ap_WarningSecurityInfo_encode_der, + S1ap_WarningSecurityInfo_decode_xer, + S1ap_WarningSecurityInfo_encode_xer, + S1ap_WarningSecurityInfo_decode_uper, + S1ap_WarningSecurityInfo_encode_uper, + S1ap_WarningSecurityInfo_decode_aper, + S1ap_WarningSecurityInfo_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_WarningSecurityInfo_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-WarningSecurityInfo.h b/lib/asn/asn1c/S1ap-WarningSecurityInfo.h new file mode 100644 index 0000000000..cb33396b3c --- /dev/null +++ b/lib/asn/asn1c/S1ap-WarningSecurityInfo.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-WarningType.c b/lib/asn/asn1c/S1ap-WarningType.c new file mode 100644 index 0000000000..af24e2f3d8 --- /dev/null +++ b/lib/asn/asn1c/S1ap-WarningType.c @@ -0,0 +1,167 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-WarningType.h" + +int +S1ap_WarningType_constraint(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 == 2LL)) { + /* 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 void +S1ap_WarningType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { + td->free_struct = asn_DEF_OCTET_STRING.free_struct; + td->print_struct = asn_DEF_OCTET_STRING.print_struct; + td->check_constraints = asn_DEF_OCTET_STRING.check_constraints; + td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn_DEF_OCTET_STRING.der_encoder; + td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder; + td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder; + td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder; + td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder; + td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder; + td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder; + if(!td->per_constraints) + td->per_constraints = asn_DEF_OCTET_STRING.per_constraints; + td->elements = asn_DEF_OCTET_STRING.elements; + td->elements_count = asn_DEF_OCTET_STRING.elements_count; + td->specifics = asn_DEF_OCTET_STRING.specifics; +} + +void +S1ap_WarningType_free(asn_TYPE_descriptor_t *td, + void *struct_ptr, int contents_only) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + td->free_struct(td, struct_ptr, contents_only); +} + +int +S1ap_WarningType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->print_struct(td, struct_ptr, ilevel, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const void *bufptr, size_t size, int tag_mode) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); +} + +asn_enc_rval_t +S1ap_WarningType_encode_der(asn_TYPE_descriptor_t *td, + void *structure, int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **structure, const char *opt_mname, const void *bufptr, size_t size) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); +} + +asn_enc_rval_t +S1ap_WarningType_encode_xer(asn_TYPE_descriptor_t *td, void *structure, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); +} + +asn_dec_rval_t +S1ap_WarningType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +asn_enc_rval_t +S1ap_WarningType_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->uper_encoder(td, constraints, structure, per_out); +} + +asn_enc_rval_t +S1ap_WarningType_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, + void *structure, asn_per_outp_t *per_out) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->aper_encoder(td, constraints, structure, per_out); +} + +asn_dec_rval_t +S1ap_WarningType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) { + S1ap_WarningType_1_inherit_TYPE_descriptor(td); + return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data); +} + +static asn_per_constraints_t asn_PER_type_S1ap_WarningType_constr_1 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (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 = { + "S1ap-WarningType", + "S1ap-WarningType", + S1ap_WarningType_free, + S1ap_WarningType_print, + S1ap_WarningType_constraint, + S1ap_WarningType_decode_ber, + S1ap_WarningType_encode_der, + S1ap_WarningType_decode_xer, + S1ap_WarningType_encode_xer, + S1ap_WarningType_decode_uper, + S1ap_WarningType_encode_uper, + S1ap_WarningType_decode_aper, + S1ap_WarningType_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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_PER_type_S1ap_WarningType_constr_1, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/asn/asn1c/S1ap-WarningType.h b/lib/asn/asn1c/S1ap-WarningType.h new file mode 100644 index 0000000000..cc378ee6aa --- /dev/null +++ b/lib/asn/asn1c/S1ap-WarningType.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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; +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/asn/asn1c/S1ap-WriteReplaceWarningRequest.c b/lib/asn/asn1c/S1ap-WriteReplaceWarningRequest.c new file mode 100644 index 0000000000..513bdad11b --- /dev/null +++ b/lib/asn/asn1c/S1ap-WriteReplaceWarningRequest.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-WriteReplaceWarningRequest.h" + +static int +memb_s1ap_WriteReplaceWarningRequest_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_WriteReplaceWarningRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_WriteReplaceWarningRequest_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_WriteReplaceWarningRequest_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_WriteReplaceWarningRequest_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_WriteReplaceWarningRequest_ies_specs_2 = { + sizeof(struct S1ap_WriteReplaceWarningRequest__s1ap_WriteReplaceWarningRequest_ies), + offsetof(struct S1ap_WriteReplaceWarningRequest__s1ap_WriteReplaceWarningRequest_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_WriteReplaceWarningRequest_ies_2 = { + "s1ap-WriteReplaceWarningRequest-ies", + "s1ap-WriteReplaceWarningRequest-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_WriteReplaceWarningRequest_ies_tags_2, + sizeof(asn_DEF_s1ap_WriteReplaceWarningRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_WriteReplaceWarningRequest_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_WriteReplaceWarningRequest_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_WriteReplaceWarningRequest_ies_tags_2) + /sizeof(asn_DEF_s1ap_WriteReplaceWarningRequest_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_WriteReplaceWarningRequest_ies_constr_2, + asn_MBR_s1ap_WriteReplaceWarningRequest_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_WriteReplaceWarningRequest_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_WriteReplaceWarningRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_WriteReplaceWarningRequest, s1ap_WriteReplaceWarningRequest_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_WriteReplaceWarningRequest_ies_2, + memb_s1ap_WriteReplaceWarningRequest_ies_constraint_1, + &asn_PER_memb_s1ap_WriteReplaceWarningRequest_ies_constr_2, + 0, + "s1ap-WriteReplaceWarningRequest-ies" + }, +}; +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 } /* s1ap-WriteReplaceWarningRequest-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_WriteReplaceWarningRequest = { + "S1ap-WriteReplaceWarningRequest", + "S1ap-WriteReplaceWarningRequest", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_WriteReplaceWarningRequest_1, + 1, /* Elements count */ + &asn_SPC_S1ap_WriteReplaceWarningRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-WriteReplaceWarningRequest.h b/lib/asn/asn1c/S1ap-WriteReplaceWarningRequest.h new file mode 100644 index 0000000000..116da38cf3 --- /dev/null +++ b/lib/asn/asn1c/S1ap-WriteReplaceWarningRequest.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_WriteReplaceWarningRequest_H_ +#define _S1ap_WriteReplaceWarningRequest_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-WriteReplaceWarningRequest */ +typedef struct S1ap_WriteReplaceWarningRequest { + struct S1ap_WriteReplaceWarningRequest__s1ap_WriteReplaceWarningRequest_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_WriteReplaceWarningRequest_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_WriteReplaceWarningRequest_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-WriteReplaceWarningResponse.c b/lib/asn/asn1c/S1ap-WriteReplaceWarningResponse.c new file mode 100644 index 0000000000..1fd33a3972 --- /dev/null +++ b/lib/asn/asn1c/S1ap-WriteReplaceWarningResponse.c @@ -0,0 +1,146 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-WriteReplaceWarningResponse.h" + +static int +memb_s1ap_WriteReplaceWarningResponse_ies_constraint_1(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 <= 65535LL)) { + /* Perform validation of the inner elements */ + return td->check_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_s1ap_WriteReplaceWarningResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_s1ap_WriteReplaceWarningResponse_ies_constr_2 GCC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_s1ap_WriteReplaceWarningResponse_ies_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1ap_IE, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_s1ap_WriteReplaceWarningResponse_ies_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_s1ap_WriteReplaceWarningResponse_ies_specs_2 = { + sizeof(struct S1ap_WriteReplaceWarningResponse__s1ap_WriteReplaceWarningResponse_ies), + offsetof(struct S1ap_WriteReplaceWarningResponse__s1ap_WriteReplaceWarningResponse_ies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_s1ap_WriteReplaceWarningResponse_ies_2 = { + "s1ap-WriteReplaceWarningResponse-ies", + "s1ap-WriteReplaceWarningResponse-ies", + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_constraint, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, + SEQUENCE_OF_decode_uper, + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, + 0, /* Use generic outmost tag fetcher */ + asn_DEF_s1ap_WriteReplaceWarningResponse_ies_tags_2, + sizeof(asn_DEF_s1ap_WriteReplaceWarningResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_WriteReplaceWarningResponse_ies_tags_2[0]) - 1, /* 1 */ + asn_DEF_s1ap_WriteReplaceWarningResponse_ies_tags_2, /* Same as above */ + sizeof(asn_DEF_s1ap_WriteReplaceWarningResponse_ies_tags_2) + /sizeof(asn_DEF_s1ap_WriteReplaceWarningResponse_ies_tags_2[0]), /* 2 */ + &asn_PER_type_s1ap_WriteReplaceWarningResponse_ies_constr_2, + asn_MBR_s1ap_WriteReplaceWarningResponse_ies_2, + 1, /* Single element */ + &asn_SPC_s1ap_WriteReplaceWarningResponse_ies_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1ap_WriteReplaceWarningResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1ap_WriteReplaceWarningResponse, s1ap_WriteReplaceWarningResponse_ies), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_s1ap_WriteReplaceWarningResponse_ies_2, + memb_s1ap_WriteReplaceWarningResponse_ies_constraint_1, + &asn_PER_memb_s1ap_WriteReplaceWarningResponse_ies_constr_2, + 0, + "s1ap-WriteReplaceWarningResponse-ies" + }, +}; +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 } /* s1ap-WriteReplaceWarningResponse-ies */ +}; +static 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) */ + 0, /* Start extensions */ + 2 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_WriteReplaceWarningResponse = { + "S1ap-WriteReplaceWarningResponse", + "S1ap-WriteReplaceWarningResponse", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_WriteReplaceWarningResponse_1, + 1, /* Elements count */ + &asn_SPC_S1ap_WriteReplaceWarningResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-WriteReplaceWarningResponse.h b/lib/asn/asn1c/S1ap-WriteReplaceWarningResponse.h new file mode 100644 index 0000000000..36227123d9 --- /dev/null +++ b/lib/asn/asn1c/S1ap-WriteReplaceWarningResponse.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#ifndef _S1ap_WriteReplaceWarningResponse_H_ +#define _S1ap_WriteReplaceWarningResponse_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1ap_IE; + +/* S1ap-WriteReplaceWarningResponse */ +typedef struct S1ap_WriteReplaceWarningResponse { + struct S1ap_WriteReplaceWarningResponse__s1ap_WriteReplaceWarningResponse_ies { + A_SEQUENCE_OF(struct S1ap_IE) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } s1ap_WriteReplaceWarningResponse_ies; + /* + * 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "S1ap-IE.h" + +#endif /* _S1ap_WriteReplaceWarningResponse_H_ */ +#include diff --git a/lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.c b/lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.c new file mode 100644 index 0000000000..167a216e78 --- /dev/null +++ b/lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#include "S1ap-X2TNLConfigurationInfo.h" + +static 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, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "eNBX2TransportLayerAddresses" + }, + { ATF_POINTER, 1, offsetof(struct S1ap_X2TNLConfigurationInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_5749P74, + 0, /* Defer constraints checking to the member type */ + 0, /* No PER visible constraints */ + 0, + "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 */ +}; +static 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 */ + 1, /* Start extensions */ + 3 /* Stop extensions */ +}; +asn_TYPE_descriptor_t asn_DEF_S1ap_X2TNLConfigurationInfo = { + "S1ap-X2TNLConfigurationInfo", + "S1ap-X2TNLConfigurationInfo", + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_constraint, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, + 0, /* Use generic outmost tag fetcher */ + 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, /* No PER visible constraints */ + asn_MBR_S1ap_X2TNLConfigurationInfo_1, + 2, /* Elements count */ + &asn_SPC_S1ap_X2TNLConfigurationInfo_specs_1 /* Additional specs */ +}; + diff --git a/lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.h b/lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.h new file mode 100644 index 0000000000..fb4f3f040d --- /dev/null +++ b/lib/asn/asn1c/S1ap-X2TNLConfigurationInfo.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.28 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/S1AP-PDU.asn" + * `asn1c -fcompound-names` + */ + +#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 ProtocolExtensionContainer; + +/* S1ap-X2TNLConfigurationInfo */ +typedef struct S1ap_X2TNLConfigurationInfo { + S1ap_ENBX2TLAs_t eNBX2TransportLayerAddresses; + struct 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; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "ProtocolExtensionContainer.h" + +#endif /* _S1ap_X2TNLConfigurationInfo_H_ */ +#include diff --git a/lib/asn/asn1c/asn_SEQUENCE_OF.c b/lib/asn/asn1c/asn_SEQUENCE_OF.c new file mode 100644 index 0000000000..ec952fc999 --- /dev/null +++ b/lib/asn/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/asn/asn1c/asn_SEQUENCE_OF.h b/lib/asn/asn1c/asn_SEQUENCE_OF.h new file mode 100644 index 0000000000..e678f03472 --- /dev/null +++ b/lib/asn/asn1c/asn_SEQUENCE_OF.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2003, 2004 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/asn/asn1c/asn_SET_OF.c b/lib/asn/asn1c/asn_SET_OF.c new file mode 100644 index 0000000000..944f2cb8ad --- /dev/null +++ b/lib/asn/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/asn/asn1c/asn_SET_OF.h b/lib/asn/asn1c/asn_SET_OF.h new file mode 100644 index 0000000000..7edf14b51b --- /dev/null +++ b/lib/asn/asn1c/asn_SET_OF.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2003, 2004 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 +extern "C" { +#endif + +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } + +#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/asn/asn1c/asn_application.h b/lib/asn/asn1c/asn_application.h new file mode 100644 index 0000000000..71e9ba61b2 --- /dev/null +++ b/lib/asn/asn1c/asn_application.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2004, 2006 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 + +/* + * 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 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, + struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) GCC_PRINTFLIKE(4, 5); + +#ifdef __cplusplus +} +#endif + +#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/lib/asn/asn1c/asn_codecs.h b/lib/asn/asn1c/asn_codecs.h new file mode 100644 index 0000000000..4b2a294293 --- /dev/null +++ b/lib/asn/asn1c/asn_codecs.h @@ -0,0 +1,109 @@ +/*- + * Copyright (c) 2003, 2004, 2005 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 */ + struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + 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/asn/asn1c/asn_codecs_prim.c b/lib/asn/asn1c/asn_codecs_prim.c new file mode 100644 index 0000000000..426339c94f --- /dev/null +++ b/lib/asn/asn1c/asn_codecs_prim.c @@ -0,0 +1,312 @@ +/*- + * 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(asn_codec_ctx_t *opt_codec_ctx, + 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(asn_TYPE_descriptor_t *td, void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval; + ASN__PRIMITIVE_TYPE_t *st = (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(asn_TYPE_descriptor_t *td, void *sptr, + int contents_only) { + 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); + + if(!contents_only) + FREEMEM(st); +} + + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + 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(asn_codec_ctx_t *opt_codec_ctx, + 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/asn/asn1c/asn_codecs_prim.h b/lib/asn/asn1c/asn_codecs_prim.h new file mode 100644 index 0000000000..0f683fdd0a --- /dev/null +++ b/lib/asn/asn1c/asn_codecs_prim.h @@ -0,0 +1,53 @@ +/*- + * Copyright (c) 2004 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 */ + int 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) + (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(asn_codec_ctx_t *opt_codec_ctx, + 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/asn/asn1c/asn_internal.h b/lib/asn/asn1c/asn_internal.h new file mode 100644 index 0000000000..53f9583be7 --- /dev/null +++ b/lib/asn/asn1c/asn_internal.h @@ -0,0 +1,128 @@ +/*- + * Copyright (c) 2003, 2004, 2005, 2007 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 + +#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 924 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#define CALLOC(nmemb, size) calloc(nmemb, size) +#define MALLOC(size) malloc(size) +#define REALLOC(oldptr, size) realloc(oldptr, size) +#define FREEMEM(ptr) free(ptr) + +#define asn_debug_indent 0 +#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) + +/* + * 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 EMIT_ASN_DEBUG == 1 /* And it was asked to emit this code... */ +#ifdef __GNUC__ +#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 /* !__GNUC__ */ +void ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* __GNUC__ */ +#else /* EMIT_ASN_DEBUG != 1 */ +static void ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* EMIT_ASN_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * 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(foo) do { \ + if(foo) goto cb_failed; \ + } while(0) +#define ASN__CALLBACK(buf, size) \ + ASN__E_CALLBACK(ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK(ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK(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); \ + er.encoded += tmp_nl + 4 * tmp_level; \ + } 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 __attribute__((unused)) +ASN__STACK_OVERFLOW_CHECK(asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((char *)ctx - (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/asn/asn1c/asn_system.h b/lib/asn/asn1c/asn_system.h new file mode 100644 index 0000000000..696a37c8a5 --- /dev/null +++ b/lib/asn/asn1c/asn_system.h @@ -0,0 +1,137 @@ +/*- + * Copyright (c) 2003, 2004, 2007 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 _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 LLONG_MAX and ULLONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ + +#ifdef HAVE_ALLOCA_H +#include /* For alloca(3) */ +#endif + +#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 +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; +#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 */ +/* + * 1. Earlier FreeBSD version didn't have , + * but was present. + * 2. Sun Solaris requires for alloca(3), + * but does not have . + */ +#if (!defined(__FreeBSD__) || !defined(_SYS_INTTYPES_H_)) +#if defined(sun) +#include /* For alloca(3) */ +#include /* for finite(3) */ +#elif defined(__hpux) +#ifdef __GNUC__ +#include /* For alloca(3) */ +#else /* !__GNUC__ */ +#define inline +#endif /* __GNUC__ */ +#else +#include /* SUSv2+ and C99 specify this file, for uintXX_t */ +#endif /* defined(sun) */ +#endif + +#include /* for ntohl() */ +#define sys_ntohl(foo) ntohl(foo) + +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 +#ifndef GCC_PRINTFLIKE +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) +#endif +#ifndef GCC_NOTUSED +#define GCC_NOTUSED __attribute__((unused)) +#endif +#else +#ifndef GCC_PRINTFLIKE +#define GCC_PRINTFLIKE(fmt,var) /* nothing */ +#endif +#ifndef GCC_NOTUSED +#define GCC_NOTUSED +#endif +#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 */ + +#endif /* ASN_SYSTEM_H */ diff --git a/lib/asn/asn1c/ber_decoder.c b/lib/asn/asn1c/ber_decoder.c new file mode 100644 index 0000000000..b3a6329e06 --- /dev/null +++ b/lib/asn/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(asn_codec_ctx_t *opt_codec_ctx, + 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->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(asn_codec_ctx_t *opt_codec_ctx, + 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 == 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 < td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < 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 < (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/asn/asn1c/ber_decoder.h b/lib/asn/asn1c/ber_decoder.h new file mode 100644 index 0000000000..9fe2e895df --- /dev/null +++ b/lib/asn/asn1c/ber_decoder.h @@ -0,0 +1,64 @@ +/*- + * Copyright (c) 2003, 2004 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. + * The der_encode() function (der_encoder.h) is an opposite to ber_decode(). + */ +asn_dec_rval_t ber_decode(struct asn_codec_ctx_s *opt_codec_ctx, + 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)( + struct asn_codec_ctx_s *opt_codec_ctx, + 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( + struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + 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/asn/asn1c/ber_tlv_length.c b/lib/asn/asn1c/ber_tlv_length.c new file mode 100644 index 0000000000..4c2f1e5fd3 --- /dev/null +++ b/lib/asn/asn1c/ber_tlv_length.c @@ -0,0 +1,178 @@ +/*- + * 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--) { + + len = (len << 8) | *buf; + if(len < 0 + || (len >> ((8 * sizeof(len)) - 8) && oct > 1)) { + /* + * Too large length value. + */ + return -1; + } + } + + if(oct == 0) { + ber_tlv_len_t lenplusepsilon = (size_t)len + 1024; + /* + * Here length may be very close or equal to 2G. + * However, the arithmetics used in some decoders + * may add some (small) quantities to the length, + * to check the resulting value against some limits. + * This may result in integer wrap-around, which + * we try to avoid by checking it earlier here. + */ + if(lenplusepsilon < 0) { + /* Too large length value */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(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; + size_t 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 * 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/asn/asn1c/ber_tlv_length.h b/lib/asn/asn1c/ber_tlv_length.h new file mode 100644 index 0000000000..3496802244 --- /dev/null +++ b/lib/asn/asn1c/ber_tlv_length.h @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2003 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( + 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/asn/asn1c/ber_tlv_tag.c b/lib/asn/asn1c/ber_tlv_tag.c new file mode 100644 index 0000000000..42708760e0 --- /dev/null +++ b/lib/asn/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) { + 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/asn/asn1c/ber_tlv_tag.h b/lib/asn/asn1c/ber_tlv_tag.h new file mode 100644 index 0000000000..60e866861b --- /dev/null +++ b/lib/asn/asn1c/ber_tlv_tag.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2003, 2004 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/asn/asn1c/constr_CHOICE.c b/lib/asn/asn1c/constr_CHOICE.c new file mode 100644 index 0000000000..4d7ec4c08a --- /dev/null +++ b/lib/asn/asn1c/constr_CHOICE.c @@ -0,0 +1,1275 @@ +/* + * Copyright (c) 2003, 2004, 2005, 2006, 2007 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 int _fetch_present_idx(const void *struct_ptr, int off, int size); +static void _set_present_idx(void *sptr, int offset, int size, int pres); + +/* + * 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(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **struct_ptr, const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + asn_CHOICE_specifics_t *specs = (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->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(asn_TYPE_descriptor_t *td, void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval; + void *memb_ptr; + size_t computed_size = 0; + int 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 = *(void **)((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 = (void *)((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->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->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) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + int 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(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + int 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->memb_constraints) { + return elm->memb_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + int ret = elm->type->check_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + /* + * Cannot inherit it eralier: + * need to make sure we get the updated version. + */ + elm->memb_constraints = elm->type->check_constraints; + return ret; + } + } 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(asn_codec_ctx_t *opt_codec_ctx, 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. + */ + asn_CHOICE_specifics_t *specs = (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 */ + int 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 */ + + 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->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); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + assert(_fetch_present_idx(st, + specs->pres_offset, specs->pres_size) == 0); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, specs->pres_size, edx + 1); + 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); + continue; + 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(asn_TYPE_descriptor_t *td, void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_CHOICE_specifics_t *specs=(asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er; + int 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]; + void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (void *)((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->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + + ASN__CALLBACK3("", 1); + + er.encoded += 5 + (2 * mlen) + tmper.encoded; + } + + 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(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + 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->per_constraints) ct = &td->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(value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->canonical_order) + value = specs->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->uper_decoder(opt_codec_ctx, elm->type, + elm->per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->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_dec_rval_t +CHOICE_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + 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->per_constraints) ct = &td->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(value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->canonical_order) + value = specs->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->aper_decoder(opt_codec_ctx, elm->type, + elm->per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->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(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_per_constraint_t *ct; + void *memb_ptr; + int present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using UPER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->per_constraints) ct = &td->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->canonical_order) + present_enc = specs->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) { + 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 = *(void **)((char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (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->uper_encoder(elm->type, elm->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->per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +asn_enc_rval_t +CHOICE_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_per_constraint_t *ct; + 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->per_constraints) ct = &td->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--; + + /* Adjust if canonical order is different from natural order */ + if(specs->canonical_order) + present = specs->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 = *(void **)((char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (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->aper_encoder(elm->type, elm->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->per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +int +CHOICE_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + int 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->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +CHOICE_free(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) { + asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; + int 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); + } + } + + if(!contents_only) { + FREEMEM(ptr); + } +} + + +/* + * 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 int +_fetch_present_idx(const void *struct_ptr, int pres_offset, int pres_size) { + const void *present_ptr; + int present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const int *)present_ptr; break; + case sizeof(short): present = *(const short *)present_ptr; break; + case sizeof(char): present = *(const 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, int pres_offset, int pres_size, int present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(int *)present_ptr = present; break; + case sizeof(short): *(short *)present_ptr = present; break; + case sizeof(char): *(char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} diff --git a/lib/asn/asn1c/constr_CHOICE.h b/lib/asn/asn1c/constr_CHOICE.h new file mode 100644 index 0000000000..ddcbb393f4 --- /dev/null +++ b/lib/asn/asn1c/constr_CHOICE.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2003, 2004, 2005 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 const struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + int struct_size; /* Size of the target structure. */ + int ctx_offset; /* Offset of the asn_codec_ctx_t member */ + int pres_offset; /* Identifier of the present member */ + int pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + int tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + int *canonical_order; + + /* + * Extensions-related stuff. + */ + int 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_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; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/lib/asn/asn1c/constr_SEQUENCE.c b/lib/asn/asn1c/constr_SEQUENCE.c new file mode 100644 index 0000000000..57621fdbf6 --- /dev/null +++ b/lib/asn/asn1c/constr_SEQUENCE.c @@ -0,0 +1,1765 @@ +/*- + * Copyright (c) 2003, 2004, 2005, 2006, 2007 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) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ( ((memb_idx) > (specs)->ext_after) \ + &&((memb_idx) < (specs)->ext_before)) + + +/* + * 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(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **struct_ptr, const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + asn_SEQUENCE_specifics_t *specs = (asn_SEQUENCE_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 */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + int 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 = (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 */ + int opt_edx_end; /* Next non-optional element */ + int use_bsearch; + int n; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%d 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) + && specs->ext_before > td->elements_count) + ) + ) { + 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 %d " + "(%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 = %d, opt = %d, ec=%d", + edx, elements[edx].optional, + td->elements_count); + if((edx + elements[edx].optional + == td->elements_count) + || (IN_EXTENSION_GROUP(specs, edx) + && specs->ext_before + > td->elements_count)) { + /* + * 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_OPEN_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; + 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; + int 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 %d)", + 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 %d)", + 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 + */ + rval = elements[edx].type->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + ASN_DEBUG("In %s SEQUENCE decoded %d %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; + 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(asn_TYPE_descriptor_t *td, + 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; + int 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]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + } + erval = elm->type->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %d %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; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(!memb_ptr) continue; + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + } + tmperval = elm->type->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, + cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %d %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; \ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(asn_codec_ctx_t *opt_codec_ctx, 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. + */ + asn_SEQUENCE_specifics_t *specs + = (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 */ + int edx; /* Element index */ + int edx_end; + + /* + * 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; + int n; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* 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 = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + buf_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, 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/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) + && specs->ext_before + > td->elements_count) + ) { + 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=%d", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + 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(buf_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: %d/%d", + 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 %d", + 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 *)buf_ptr)[0]:'.', + size>1?((const char *)buf_ptr)[1]:'.', + size>2?((const char *)buf_ptr)[2]:'.', + size>3?((const char *)buf_ptr)[3]:'.', + size>4?((const char *)buf_ptr)[4]:'.', + size>5?((const char *)buf_ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(asn_TYPE_descriptor_t *td, 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); + int 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]; + void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (void *)((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->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + + ASN__CALLBACK3("", 1); + er.encoded += 5 + (2 * mlen) + tmper.encoded; + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +int +SEQUENCE_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + int 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->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(asn_TYPE_descriptor_t *td, void *sptr, int contents_only) { + int edx; + + 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); + } + } + + if(!contents_only) { + FREEMEM(sptr); + } +} + +int +SEQUENCE_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + int 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->memb_constraints) { + int ret = elm->memb_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + if(ret) return ret; + } else { + int ret = elm->type->check_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + if(ret) return ret; + /* + * Cannot inherit it earlier: + * need to make sure we get the updated version. + */ + elm->memb_constraints = elm->type->check_constraints; + } + } + + return 0; +} + +asn_dec_rval_t +SEQUENCE_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_SEQUENCE_specifics_t *specs = (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; + int 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->ext_before >= 0) { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } else { + extpresent = 0; + } + + /* 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(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; + } + + /* 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) { + /* Fill-in DEFAULT */ + if(elm->default_value(1, 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); + rv = elm->type->uper_decoder(opt_codec_ctx, elm->type, + elm->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", (long)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->ext_after + 1; 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("%d 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->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) 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(1, memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +asn_dec_rval_t +SEQUENCE_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_SEQUENCE_specifics_t *specs = (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; + int 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->ext_before >= 0) { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } else { + extpresent = 0; + } + + /* 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(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; + } + + /* 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) { + /* Fill-in DEFAULT */ + if(elm->default_value(1, 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); + rv = elm->type->aper_decoder(opt_codec_ctx, elm->type, + elm->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 %lld present in %s", (long long)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 %lld bits (%x..)", + td->name, (long long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->ext_after + 1; 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("%d 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->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) 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(1, memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions(asn_TYPE_descriptor_t *td, void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + asn_SEQUENCE_specifics_t *specs + = (asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + int edx; + + if(specs->ext_before < 0) + return 0; + + /* Find out which extensions are present */ + for(edx = specs->ext_after + 1; 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("%s (@%d) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%d) 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->per_constraints, *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_SEQUENCE_specifics_t *specs + = (asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er; + int n_extensions; + int edx; + int 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->ext_before >= 0) { + n_extensions = SEQUENCE_handle_extensions(td, sptr, 0, 0); + per_put_few_bits(po, n_extensions ? 1 : 0, 1); + } else { + n_extensions = 0; /* There are no extensions to encode */ + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + void *memb_ptr; /* Pointer to the member */ + void **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 = (void **)((char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value + && elm->default_value(0, memb_ptr2) == 1) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value ? "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("ext_after = %d, ec = %d, eb = %d", specs->ext_after, td->elements_count, specs->ext_before); + for(edx = 0; edx < ((specs->ext_after < 0) + ? td->elements_count : specs->ext_before - 1); edx++) { + + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **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 = (void **)((char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %d not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value && elm->default_value(0, memb_ptr2) == 1) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->uper_encoder(elm->type, elm->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(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_enc_rval_t +SEQUENCE_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_SEQUENCE_specifics_t *specs + = (asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er; + int n_extensions; + int edx; + int 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->ext_before >= 0) { + n_extensions = SEQUENCE_handle_extensions(td, sptr, 0, 0); + per_put_few_bits(po, n_extensions ? 1 : 0, 1); + } else { + n_extensions = 0; /* There are no extensions to encode */ + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + void *memb_ptr; /* Pointer to the member */ + void **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 = (void **)((char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value + && elm->default_value(0, memb_ptr2) == 1) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value ? "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("ext_after = %d, ec = %d, eb = %d", specs->ext_after, td->elements_count, specs->ext_before); + for(edx = 0; edx < ((specs->ext_after < 0) + ? td->elements_count : specs->ext_before - 1); edx++) { + + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **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 = (void **)((char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %d not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value && elm->default_value(0, memb_ptr2) == 1) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->aper_encoder(elm->type, elm->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(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); +} diff --git a/lib/asn/asn1c/constr_SEQUENCE.h b/lib/asn/asn1c/constr_SEQUENCE.h new file mode 100644 index 0000000000..d1818484c4 --- /dev/null +++ b/lib/asn/asn1c/constr_SEQUENCE.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2003, 2004 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 const struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + int struct_size; /* Size of the target structure. */ + int ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + int tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + int roms_count; /* Root optional members count */ + int aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + */ + int ext_after; /* Extensions start after this member */ + int ext_before; /* Extensions stop before this member */ +} 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_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; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/lib/asn/asn1c/constr_SEQUENCE_OF.c b/lib/asn/asn1c/constr_SEQUENCE_OF.c new file mode 100644 index 0000000000..faedf7bb00 --- /dev/null +++ b/lib/asn/asn1c/constr_SEQUENCE_OF.c @@ -0,0 +1,275 @@ +/*- + * 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(asn_TYPE_descriptor_t *td, 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; + asn_anonymous_sequence_ *list = _A_SEQUENCE_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->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->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(asn_TYPE_descriptor_t *td, void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er; + asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_sequence_ *list = _A_SEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + unsigned int 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->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + 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); + er.encoded += 5; + } + + er.encoded += (2 * mlen) + tmper.encoded; + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_anonymous_sequence_ *list; + 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_SEQUENCE_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->per_constraints) ct = &td->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 %lld ub %lld %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; + } + + 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 = uper_put_length(po, 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->uper_encoder(elm->type, + elm->per_constraints, memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + } + + ASN__ENCODED_OK(er); +} + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { + asn_anonymous_sequence_ *list; + 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_SEQUENCE_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->per_constraints) ct = &td->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 %lld ub %lld %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->aper_encoder(elm->type, + elm->per_constraints, memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + } + + ASN__ENCODED_OK(er); +} diff --git a/lib/asn/asn1c/constr_SEQUENCE_OF.h b/lib/asn/asn1c/constr_SEQUENCE_OF.h new file mode 100644 index 0000000000..94a7cd543f --- /dev/null +++ b/lib/asn/asn1c/constr_SEQUENCE_OF.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2003, 2005 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. + */ +#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_uper SET_OF_decode_uper +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/lib/asn/asn1c/constr_SET_OF.c b/lib/asn/asn1c/constr_SET_OF.c new file mode 100644 index 0000000000..a091eec130 --- /dev/null +++ b/lib/asn/asn1c/constr_SET_OF.c @@ -0,0 +1,1042 @@ +/*- + * Copyright (c) 2003, 2004, 2005 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(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + void **struct_ptr, const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; + 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->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 size; +}; +/* 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->size) + return -1; + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 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; + int ret; + size_t common_len; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + 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; + } + + return ret; +} + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(asn_TYPE_descriptor_t *td, 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; + asn_TYPE_descriptor_t *elm_type = elm->type; + der_type_encoder_f *der_encoder = elm_type->der_encoder; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + ssize_t eels_count = 0; + size_t max_encoded_len = 1; + asn_enc_rval_t erval; + int ret; + 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]; + if(!memb_ptr) continue; + erval = der_encoder(elm_type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + + /* Compute maximum encoding's size */ + if(max_encoded_len < (size_t)erval.encoded) + max_encoded_len = 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 || list->count == 0) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = (struct _el_buffer *)MALLOC( + list->count * sizeof(encoded_els[0])); + if(encoded_els == NULL) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + struct _el_buffer *encoded_el = &encoded_els[eels_count]; + + if(!memb_ptr) continue; + + /* + * Prepare space for encoding. + */ + encoded_el->buf = (uint8_t *)MALLOC(max_encoded_len); + if(encoded_el->buf) { + encoded_el->length = 0; + encoded_el->size = max_encoded_len; + } else { + for(edx--; edx >= 0; edx--) + FREEMEM(encoded_els[edx].buf); + FREEMEM(encoded_els); + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + /* + * Encode the member into the prepared space. + */ + erval = der_encoder(elm_type, memb_ptr, 0, elm->tag, + _el_addbytes, encoded_el); + if(erval.encoded == -1) { + for(; edx >= 0; edx--) + FREEMEM(encoded_els[edx].buf); + FREEMEM(encoded_els); + return erval; + } + encoding_size += erval.encoded; + eels_count++; + } + + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, eels_count, sizeof(encoded_els[0]), _el_buf_cmp); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + ret = 0; + for(edx = 0; edx < eels_count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(ret == 0 + && cb(encoded_el->buf, encoded_el->length, app_key) < 0) + ret = -1; + FREEMEM(encoded_el->buf); + } + FREEMEM(encoded_els); + + if(ret || computed_size != (size_t)encoding_size) { + /* + * Standard callback failed, or + * 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; + } + + ASN__ENCODED_OK(erval); +} + +#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(asn_codec_ctx_t *opt_codec_ctx, 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. + */ + asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; + 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->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(asn_TYPE_descriptor_t *td, void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er; + asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_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->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) { + td = tmper.failed_type; + sptr = tmper.structure_ptr; + goto cb_failed; + } + 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); + er.encoded += 5; + } + + er.encoded += (2 * mlen) + tmper.encoded; + } + + 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; + + 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: + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; +cleanup: + if(encs) { + while(encs_count-- > 0) { + if(encs[encs_count].buffer) + FREEMEM(encs[encs_count].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} + +int +SET_OF_print(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->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(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) { + if(td && ptr) { + 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 = (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; + } + + if(!contents_only) { + FREEMEM(ptr); + } + } +} + +int +SET_OF_constraint(asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + 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->memb_constraints; + if(!constr) constr = elm->type->check_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; + } + + /* + * Cannot inherit it eralier: + * need to make sure we get the updated version. + */ + if(!elm->memb_constraints) + elm->memb_constraints = elm->type->check_constraints; + + return 0; +} + +asn_dec_rval_t +SET_OF_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; + asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + 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->per_constraints) ct = &td->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+%lld 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, + 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->uper_decoder(opt_codec_ctx, elm->type, + elm->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; +} + +asn_dec_rval_t +SET_OF_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; + asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + 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->per_constraints) ct = &td->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); + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound); + ASN_DEBUG("Preparing to fetch %ld+%lld 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->aper_decoder(opt_codec_ctx, elm->type, + elm->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; +} diff --git a/lib/asn/asn1c/constr_SET_OF.h b/lib/asn/asn1c/constr_SET_OF.h new file mode 100644 index 0000000000..8ddd0e3ba2 --- /dev/null +++ b/lib/asn/asn1c/constr_SET_OF.h @@ -0,0 +1,44 @@ +/*- + * Copyright (c) 2003 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 const struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + int struct_size; /* Size of the target structure. */ + int 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_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; +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; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/lib/asn/asn1c/constr_TYPE.c b/lib/asn/asn1c/constr_TYPE.c new file mode 100644 index 0000000000..322f68c86c --- /dev/null +++ b/lib/asn/asn1c/constr_TYPE.c @@ -0,0 +1,77 @@ +/*- + * 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->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, 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->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/asn/asn1c/constr_TYPE.h b/lib/asn/asn1c/constr_TYPE.h new file mode 100644 index 0000000000..13c60f3348 --- /dev/null +++ b/lib/asn/asn1c/constr_TYPE.h @@ -0,0 +1,182 @@ +/*- + * Copyright (c) 2003, 2004, 2005, 2006 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 */ + +/* + * Free the structure according to its specification. + * If (free_contents_only) is set, the wrapper structure itself (struct_ptr) + * will not be freed. (It may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are allocated + * dynamically.) + */ +typedef void (asn_struct_free_f)( + struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, int free_contents_only); +#define ASN_STRUCT_FREE(asn_DEF, ptr) (asn_DEF).free_struct(&(asn_DEF),ptr,0) +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).free_struct(&(asn_DEF),ptr,1) + +/* + * Print the structure according to its specification. + */ +typedef int (asn_struct_print_f)( + struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * 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; + + +/* + * 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_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_constr_check_f *check_constraints; /* Constraints validator */ + 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 */ + 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 */ + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + asn_outmost_tag_f *outmost_tag; /* */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + int tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + int all_tags_count; /* Number of tags */ + + asn_per_constraints_t *per_constraints; /* PER compiled constraints */ + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + int 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 /* ANY type, without meaningful tag */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + int optional; /* Following optional members, including current */ + int 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_constr_check_f *memb_constraints; /* Constraints validator */ + asn_per_constraints_t *per_constraints; /* PER compiled constraints */ + int (*default_value)(int setval, void **sptr); /* 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 */ + int 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, relatvie */ +} asn_TYPE_tag2member_t; + +/* + * This function is a wrapper around (td)->print_struct, which 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 */ + 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/asn/asn1c/constraints.c b/lib/asn/asn1c/constraints.c new file mode 100644 index 0000000000..1bdda73e5d --- /dev/null +++ b/lib/asn/asn1c/constraints.c @@ -0,0 +1,93 @@ +#include "asn_internal.h" +#include "constraints.h" + +int +asn_generic_no_constraint(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(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 { + asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +_asn_i_ctfailcb(void *key, 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(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->check_constraints(type_descriptor, + struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) + *errlen = arg.errlen; + + return ret; +} + diff --git a/lib/asn/asn1c/constraints.h b/lib/asn/asn1c/constraints.h new file mode 100644 index 0000000000..48d49e246a --- /dev/null +++ b/lib/asn/asn1c/constraints.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2004, 2006 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(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)( + 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/asn/asn1c/der_encoder.c b/lib/asn/asn1c/der_encoder.c new file mode 100644 index 0000000000..1c014802a8 --- /dev/null +++ b/lib/asn/asn1c/der_encoder.c @@ -0,0 +1,201 @@ +/*- + * 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(asn_TYPE_descriptor_t *type_descriptor, 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->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(asn_TYPE_descriptor_t *type_descriptor, 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->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(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) { + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + ssize_t *lens; + 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(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 = (ber_tlv_tag_t *)alloca((sd->tags_count + 1) * sizeof(ber_tlv_tag_t)); + if(!tags_buf) { /* Can fail on !x86 */ + errno = ENOMEM; + return -1; + } + 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; + + lens = (ssize_t *)alloca(tags_count * sizeof(lens[0])); + if(!lens) { + errno = ENOMEM; + return -1; + } + + /* + * 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("%s %s TL sequence (%d elements)", + cb?"Encoding":"Estimating", 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/asn/asn1c/der_encoder.h b/lib/asn/asn1c/der_encoder.h new file mode 100644 index 0000000000..61431c6dbd --- /dev/null +++ b/lib/asn/asn1c/der_encoder.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003, 2004 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. + * The ber_decode() function (ber_decoder.h) is an opposite of der_encode(). + */ +asn_enc_rval_t der_encode(struct asn_TYPE_descriptor_s *type_descriptor, + 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( + struct asn_TYPE_descriptor_s *type_descriptor, + 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)( + struct asn_TYPE_descriptor_s *type_descriptor, + 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( + 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/asn/asn1c/per_decoder.c b/lib/asn/asn1c/per_decoder.c new file mode 100644 index 0000000000..4fc07c480d --- /dev/null +++ b/lib/asn/asn1c/per_decoder.c @@ -0,0 +1,176 @@ +#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(asn_codec_ctx_t *opt_codec_ctx, 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 +aper_decode_complete(asn_codec_ctx_t *opt_codec_ctx, 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 +uper_decode(asn_codec_ctx_t *opt_codec_ctx, 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->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->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(asn_codec_ctx_t *opt_codec_ctx, 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->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->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/asn/asn1c/per_decoder.h b/lib/asn/asn1c/per_decoder.h new file mode 100644 index 0000000000..5541bae86a --- /dev/null +++ b/lib/asn/asn1c/per_decoder.h @@ -0,0 +1,78 @@ +/*- + * Copyright (c) 2005, 2007 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#10.1. + * On success, this call always returns (.consumed >= 1), as per X.691#10.1.3. + */ +asn_dec_rval_t uper_decode_complete(struct asn_codec_ctx_s *opt_codec_ctx, + 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(struct asn_codec_ctx_s *opt_codec_ctx, + 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 */ + ); + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete(struct asn_codec_ctx_s *opt_codec_ctx, + 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(struct asn_codec_ctx_s *opt_codec_ctx, + 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)(asn_codec_ctx_t *opt_codec_ctx, + struct asn_TYPE_descriptor_s *type_descriptor, + 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/asn/asn1c/per_encoder.c b/lib/asn/asn1c/per_encoder.c new file mode 100644 index 0000000000..f0823e394e --- /dev/null +++ b/lib/asn/asn1c/per_encoder.c @@ -0,0 +1,244 @@ +#include +#include +#include + +static asn_enc_rval_t uper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t *, void *sptr, asn_app_consume_bytes_f *cb, void *app_key); + +static asn_enc_rval_t aper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t *, void *sptr, asn_app_consume_bytes_f *cb, void *app_key); +asn_enc_rval_t +uper_encode(asn_TYPE_descriptor_t *td, void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + return uper_encode_internal(td, 0, sptr, cb, app_key); +} + +/* + * 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(asn_TYPE_descriptor_t *td, 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_internal(td, 0, sptr, encode_to_buffer_cb, &key); +} + +asn_enc_rval_t +aper_encode_to_buffer(asn_TYPE_descriptor_t *td, 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_internal(td, 0, 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) { + void *p; + arg->allocated = arg->allocated ? (arg->allocated << 2) : size; + p = REALLOC(arg->buffer, arg->allocated); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} +ssize_t +uper_encode_to_new_buffer(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void *sptr, void **buffer_r) { + asn_enc_rval_t er; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode_internal(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); + } +} + +ssize_t +aper_encode_to_new_buffer(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void *sptr, void **buffer_r) { + asn_enc_rval_t er; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode_internal(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 %lld bits", (long 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->outper(po->tmpspace, buf - po->tmpspace, po->op_key); +} + +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++; + } + + return po->outper(po->tmpspace, buf - po->tmpspace, po->op_key); +} + +static asn_enc_rval_t +uper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, 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->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.outper = cb; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->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; +} + +static asn_enc_rval_t +aper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, 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->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.outper = cb; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->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/asn/asn1c/per_encoder.h b/lib/asn/asn1c/per_encoder.h new file mode 100644 index 0000000000..e3b9190bfa --- /dev/null +++ b/lib/asn/asn1c/per_encoder.h @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2006, 2007 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(struct asn_TYPE_descriptor_s *type_descriptor, + 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( + struct asn_TYPE_descriptor_s *type_descriptor, + 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( + struct asn_TYPE_descriptor_s *type_descriptor, + 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( + struct asn_TYPE_descriptor_s *type_descriptor, + asn_per_constraints_t *constraints, + void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +ssize_t +aper_encode_to_new_buffer(struct asn_TYPE_descriptor_s *td, + asn_per_constraints_t *constraints, + void *sptr, + void **buffer_r); +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t (per_type_encoder_f)( + struct asn_TYPE_descriptor_s *type_descriptor, + asn_per_constraints_t *constraints, + void *struct_ptr, + asn_per_outp_t *per_output +); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/lib/asn/asn1c/per_opentype.c b/lib/asn/asn1c/per_opentype.c new file mode 100644 index 0000000000..43d656e099 --- /dev/null +++ b/lib/asn/asn1c/per_opentype.c @@ -0,0 +1,407 @@ +/* + * 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(asn_codec_ctx_t *, asn_TYPE_descriptor_t *td, 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(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, 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 = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + ssize_t maySave = uper_put_length(po, toGo); + ASN_DEBUG("Prepending length %d to %s and allowing to save %d", + (int)size, td->name, (int)maySave); + 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, (long)size); + + return 0; +} + +int +aper_open_type_put(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, 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 %lld + overhead (1byte?)", + td->name, (long long)size); + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(asn_codec_ctx_t *ctx, asn_TYPE_descriptor_t *td, + 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, &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->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 GCC_NOTUSED +uper_open_type_get_complex(asn_codec_ctx_t *ctx, 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, + per_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->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, + per_data_string(pd), + per_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, + per_data_string(pd), per_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(asn_codec_ctx_t *ctx, asn_TYPE_descriptor_t *td, + 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(asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.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(asn_codec_ctx_t *ctx, asn_TYPE_descriptor_t *td, + 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, &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", + per_data_string(pd), per_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; +} diff --git a/lib/asn/asn1c/per_opentype.h b/lib/asn/asn1c/per_opentype.h new file mode 100644 index 0000000000..2117efe640 --- /dev/null +++ b/lib/asn/asn1c/per_opentype.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2007 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(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int uper_open_type_put(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po); + +int aper_open_type_put(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/lib/asn/asn1c/per_support.c b/lib/asn/asn1c/per_support.c new file mode 100644 index 0000000000..42244ba6c2 --- /dev/null +++ b/lib/asn/asn1c/per_support.c @@ -0,0 +1,679 @@ +/* + * Copyright (c) 2005-2014 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +char * +per_data_string(asn_per_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%ld span %+ld[%d..%d] (%d)}", + (long)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + (int)(pd->nbits - pd->nboff)); + return buf[n]; +} + +void +per_get_undo(asn_per_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +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; +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +per_get_few_bits(asn_per_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 = per_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 = per_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 = ((buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_per_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + per_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 = per_get_few_bits(&tpd, nbits - 24) << 24; + accum |= per_get_few_bits(&tpd, 24); + } else { + per_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%02x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + pd->buffer[0], + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +per_get_many_bits(asn_per_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + ASN_DEBUG("align: %s, nbits %d", alright ? "YES":"NO", nbits); + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = per_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 = per_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = per_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; +} + +/* + * Get the length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, int *repeat) { + ssize_t value; + + *repeat = 0; + + 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_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); +} + +/* + * 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, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +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=%lld", (long long)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 */ + } +} + +/* + * 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; +} + +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) { + if (range < 0) return -1; + /* 1 -> 8 bits */ + int i; + 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; + return -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; +} + +/* + * 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; + + ASN_DEBUG("uper put nsnnwn n %d", n); + 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 long *out_value, int nbits) { + unsigned long long lhalf; /* Lower half of the number*/ + long 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 long)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_put_constrained_whole_number_s(asn_per_outp_t *po, long long v, int nbits) { + /* + * Assume signed number can be safely coerced into + * unsigned of the same range. + * The following testing code will likely be optimized out + * by compiler if it is true. + */ + unsigned long long uvalue1 = ULONG_MAX; + long long svalue = uvalue1; + unsigned long long uvalue2 = svalue; + assert(uvalue1 == uvalue2); + return uper_put_constrained_whole_number_u(po, v, nbits); +} + +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long 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); + } +} + +/* + * Put a small number of bits (<= 31). + */ +int +per_put_few_bits(asn_per_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, 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) { + int complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->outper(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 { + per_put_few_bits(po, bits >> (obits - 24), 24); + per_put_few_bits(po, bits, obits - 24); + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + 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); +} + +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; +} + +/* + * Output a large number of bits. + */ +int +per_put_many_bits(asn_per_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(per_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(per_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + +/* + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length) { + + ASN_DEBUG("UPER put length %zu", length); + + 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); +} + +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); +} + + +/* + * 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) { + /* #10.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(uper_put_length(po, length) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +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; +} diff --git a/lib/asn/asn1c/per_support.h b/lib/asn/asn1c/per_support.h new file mode 100644 index 0000000000..54fdbb544f --- /dev/null +++ b/lib/asn/asn1c/per_support.h @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2005-2014 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 */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef const 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 long lower_bound; /* "lb" value */ + long long upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef const struct asn_per_constraints_s { + struct asn_per_constraint_s value; + struct asn_per_constraint_s size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_per_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_per_data_s *); + void *refill_key; +} asn_per_data_t; + +/* + * 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 per_get_few_bits(asn_per_data_t *per_data, int get_nbits); + +/* Undo the immediately preceeding "get_few_bits" operation */ +void per_get_undo(asn_per_data_t *per_data, 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 per_get_many_bits(asn_per_data_t *pd, uint8_t *dst, int right_align, + int get_nbits); + +/* + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, + int effective_bound_bits, + 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 long *v, int nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *per_data_string(asn_per_data_t *pd); + +/* + * This structure supports forming PER output. + */ +typedef struct asn_per_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 (*outper)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (outper) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (outper) */ +} asn_per_outp_t; + +/* Output a small number of bits (<= 31) */ +int per_put_few_bits(asn_per_outp_t *per_data, uint32_t bits, int obits); + +/* Output a large number of bits */ +int per_put_many_bits(asn_per_outp_t *po, const uint8_t *src, int put_nbits); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_s(asn_per_outp_t *po, long long v, int nbits); +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long long v, int nbits); + +/* 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 length "n" to the Unaligned PER stream. + * 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); + +ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); + +/* + * 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/asn/asn1c/xer_decoder.c b/lib/asn/asn1c/xer_decoder.c new file mode 100644 index 0000000000..299a7c1eed --- /dev/null +++ b/lib/asn/asn1c/xer_decoder.c @@ -0,0 +1,368 @@ +/* + * Copyright (c) 2004, 2005 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(asn_codec_ctx_t *opt_codec_ctx, 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->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(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/asn/asn1c/xer_decoder.h b/lib/asn/asn1c/xer_decoder.h new file mode 100644 index 0000000000..301b613cf4 --- /dev/null +++ b/lib/asn/asn1c/xer_decoder.h @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2004 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. + */ +asn_dec_rval_t xer_decode(struct asn_codec_ctx_s *opt_codec_ctx, + 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)(asn_codec_ctx_t *opt_codec_ctx, + 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(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/asn/asn1c/xer_encoder.c b/lib/asn/asn1c/xer_encoder.c new file mode 100644 index 0000000000..4606575800 --- /dev/null +++ b/lib/asn/asn1c/xer_encoder.c @@ -0,0 +1,67 @@ +/*- + * 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(asn_TYPE_descriptor_t *td, void *sptr, + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er, 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->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + + ASN__CALLBACK3("\n", xcan); + + er.encoded = 4 + xcan + (2 * mlen) + tmper.encoded; + + 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, asn_TYPE_descriptor_t *td, 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); +} diff --git a/lib/asn/asn1c/xer_encoder.h b/lib/asn/asn1c/xer_encoder.h new file mode 100644 index 0000000000..055e73c0c8 --- /dev/null +++ b/lib/asn/asn1c/xer_encoder.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2004 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. + */ +asn_enc_rval_t xer_encode(struct asn_TYPE_descriptor_s *type_descriptor, + 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, struct asn_TYPE_descriptor_s *td, void *sptr); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t (xer_type_encoder_f)( + struct asn_TYPE_descriptor_s *type_descriptor, + 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/asn/asn1c/xer_support.c b/lib/asn/asn1c/xer_support.c new file mode 100644 index 0000000000..36b4bfbfc0 --- /dev/null +++ b/lib/asn/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/asn/asn1c/xer_support.h b/lib/asn/asn1c/xer_support.h new file mode 100644 index 0000000000..8b01944ab5 --- /dev/null +++ b/lib/asn/asn1c/xer_support.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003, 2004 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/asn/s1ap_common.c b/lib/asn/s1ap_common.c new file mode 100644 index 0000000000..869caeda1b --- /dev/null +++ b/lib/asn/s1ap_common.c @@ -0,0 +1,186 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance 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. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + + +/*! \file s1ap_common.c + \brief s1ap procedures for both eNB and MME + \author Sebastien ROUX + \date 2012 + \version 0.1 +*/ + +#include + +#include "s1ap_common.h" +#include "S1AP-PDU.h" +#include "dynamic_memory_check.h" +#include "log.h" + +int asn_debug = 0; +int asn1_xer_print = 0; + + +ssize_t +s1ap_generate_initiating_message ( + uint8_t ** buffer, + uint32_t * length, + e_S1ap_ProcedureCode procedureCode, + S1ap_Criticality_t criticality, + asn_TYPE_descriptor_t * td, + void *sptr) +{ + S1AP_PDU_t pdu; + ssize_t encoded; + + memset (&pdu, 0, sizeof (S1AP_PDU_t)); + pdu.present = S1AP_PDU_PR_initiatingMessage; + pdu.choice.initiatingMessage.procedureCode = procedureCode; + pdu.choice.initiatingMessage.criticality = criticality; + ANY_fromType_aper (&pdu.choice.initiatingMessage.value, td, sptr); + + if (asn1_xer_print) { + xer_fprint (stdout, &asn_DEF_S1AP_PDU, (void *)&pdu); + } + + /* + * We can safely free list of IE from sptr + */ + ASN_STRUCT_FREE_CONTENTS_ONLY (*td, sptr); + + if ((encoded = aper_encode_to_new_buffer (&asn_DEF_S1AP_PDU, 0, &pdu, (void **)buffer)) < 0) { + OAILOG_ERROR (LOG_S1AP, "Encoding of %s failed\n", td->name); + return -1; + } + + *length = encoded; + return encoded; +} + +ssize_t +s1ap_generate_successfull_outcome ( + uint8_t ** buffer, + uint32_t * length, + e_S1ap_ProcedureCode procedureCode, + S1ap_Criticality_t criticality, + asn_TYPE_descriptor_t * td, + void *sptr) +{ + S1AP_PDU_t pdu; + ssize_t encoded; + + memset (&pdu, 0, sizeof (S1AP_PDU_t)); + pdu.present = S1AP_PDU_PR_successfulOutcome; + pdu.choice.successfulOutcome.procedureCode = procedureCode; + pdu.choice.successfulOutcome.criticality = criticality; + ANY_fromType_aper (&pdu.choice.successfulOutcome.value, td, sptr); + + if (asn1_xer_print) { + xer_fprint (stdout, &asn_DEF_S1AP_PDU, (void *)&pdu); + } + + /* + * We can safely free list of IE from sptr + */ + ASN_STRUCT_FREE_CONTENTS_ONLY (*td, sptr); + + if ((encoded = aper_encode_to_new_buffer (&asn_DEF_S1AP_PDU, 0, &pdu, (void **)buffer)) < 0) { + OAILOG_ERROR (LOG_S1AP, "Encoding of %s failed\n", td->name); + return -1; + } + + *length = encoded; + return encoded; +} + +ssize_t +s1ap_generate_unsuccessfull_outcome ( + uint8_t ** buffer, + uint32_t * length, + e_S1ap_ProcedureCode procedureCode, + S1ap_Criticality_t criticality, + asn_TYPE_descriptor_t * td, + void *sptr) +{ + S1AP_PDU_t pdu; + ssize_t encoded; + + memset (&pdu, 0, sizeof (S1AP_PDU_t)); + pdu.present = S1AP_PDU_PR_unsuccessfulOutcome; + pdu.choice.successfulOutcome.procedureCode = procedureCode; + pdu.choice.successfulOutcome.criticality = criticality; + ANY_fromType_aper (&pdu.choice.successfulOutcome.value, td, sptr); + + if (asn1_xer_print) { + xer_fprint (stdout, &asn_DEF_S1AP_PDU, (void *)&pdu); + } + + /* + * We can safely free list of IE from sptr + */ + ASN_STRUCT_FREE_CONTENTS_ONLY (*td, sptr); + + if ((encoded = aper_encode_to_new_buffer (&asn_DEF_S1AP_PDU, 0, &pdu, (void **)buffer)) < 0) { + OAILOG_ERROR (LOG_S1AP, "Encoding of %s failed\n", td->name); + return -1; + } + + *length = encoded; + return encoded; +} + +S1ap_IE_t * +s1ap_new_ie ( + S1ap_ProtocolIE_ID_t id, + S1ap_Criticality_t criticality, + asn_TYPE_descriptor_t * type, + void *sptr) +{ + S1ap_IE_t *buff; + + if ((buff = malloc (sizeof (S1ap_IE_t))) == NULL) { + // Possible error on malloc + return NULL; + } + + memset ((void *)buff, 0, sizeof (S1ap_IE_t)); + buff->id = id; + buff->criticality = criticality; + + if (ANY_fromType_aper (&buff->value, type, sptr) < 0) { + OAILOG_ERROR (LOG_S1AP, "Encoding of %s failed\n", type->name); + free_wrapper (buff); + return NULL; + } + + if (asn1_xer_print) + if (xer_fprint (stdout, &asn_DEF_S1ap_IE, buff) < 0) { + free_wrapper (buff); + return NULL; + } + + return buff; +} + +void +s1ap_handle_criticality ( + S1ap_Criticality_t criticality) +{ +} diff --git a/lib/asn/s1ap_common.h b/lib/asn/s1ap_common.h new file mode 100644 index 0000000000..abe375f19f --- /dev/null +++ b/lib/asn/s1ap_common.h @@ -0,0 +1,460 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance 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. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + + +/** @defgroup _s1ap_impl_ S1AP Layer Reference Implementation + * @ingroup _ref_implementation_ + * @{ + */ + +#if HAVE_CONFIG_H_ +# include "config.h" +#endif + +#ifndef FILE_S1AP_COMMON_SEEN +#define FILE_S1AP_COMMON_SEEN + +/* Defined in asn_internal.h */ +// extern int asn_debug_indent; +extern int asn_debug; + +#if defined(EMIT_ASN_DEBUG_EXTERN) +inline void ASN_DEBUG(const char *fmt, ...); +#endif + +#include "S1ap-Criticality.h" +#include "S1ap-Presence.h" +#include "S1ap-PrivateIE-ID.h" +#include "S1ap-ProcedureCode.h" +#include "S1ap-ProtocolExtensionID.h" +#include "S1ap-ProtocolIE-ID.h" +#include "S1ap-TriggeringMessage.h" +#include "S1ap-AllocationAndRetentionPriority.h" +#include "S1ap-Bearers-SubjectToStatusTransfer-Item.h" +#include "S1ap-BitRate.h" +#include "S1ap-BPLMNs.h" +#include "S1ap-BroadcastCompletedAreaList.h" +#include "S1ap-Cause.h" +#include "S1ap-CauseMisc.h" +#include "S1ap-CauseProtocol.h" +#include "S1ap-CauseRadioNetwork.h" +#include "S1ap-CauseTransport.h" +#include "S1ap-CauseNas.h" +#include "S1ap-CellIdentity.h" +#include "S1ap-CellID-Broadcast.h" +#include "S1ap-CellID-Broadcast-Item.h" +#include "S1ap-Cdma2000PDU.h" +#include "S1ap-Cdma2000RATType.h" +#include "S1ap-Cdma2000SectorID.h" +#include "S1ap-Cdma2000HOStatus.h" +#include "S1ap-Cdma2000HORequiredIndication.h" +#include "S1ap-Cdma2000OneXSRVCCInfo.h" +#include "S1ap-Cdma2000OneXMEID.h" +#include "S1ap-Cdma2000OneXMSI.h" +#include "S1ap-Cdma2000OneXPilot.h" +#include "S1ap-Cdma2000OneXRAND.h" +#include "S1ap-Cell-Size.h" +#include "S1ap-CellType.h" +#include "S1ap-CGI.h" +#include "S1ap-CI.h" +#include "S1ap-CNDomain.h" +#include "S1ap-CSFallbackIndicator.h" +#include "S1ap-CSG-Id.h" +#include "S1ap-CSG-IdList.h" +#include "S1ap-CSG-IdList-Item.h" +#include "S1ap-COUNTvalue.h" +#include "S1ap-DataCodingScheme.h" +#include "S1ap-DL-Forwarding.h" +#include "S1ap-Direct-Forwarding-Path-Availability.h" +#include "S1ap-ECGIList.h" +#include "S1ap-EmergencyAreaIDList.h" +#include "S1ap-EmergencyAreaID.h" +#include "S1ap-EmergencyAreaID-Broadcast.h" +#include "S1ap-EmergencyAreaID-Broadcast-Item.h" +#include "S1ap-CompletedCellinEAI.h" +#include "S1ap-CompletedCellinEAI-Item.h" +#include "S1ap-ENB-ID.h" +#include "S1ap-GERAN-Cell-ID.h" +#include "S1ap-Global-ENB-ID.h" +#include "S1ap-ENB-StatusTransfer-TransparentContainer.h" +#include "S1ap-ENBname.h" +#include "S1ap-ENBX2TLAs.h" +#include "S1ap-EncryptionAlgorithms.h" +#include "S1ap-EPLMNs.h" +#include "S1ap-EventType.h" +#include "S1ap-E-RAB-ID.h" +#include "S1ap-E-RABInformationList.h" +#include "S1ap-E-RABInformationListItem.h" +#include "S1ap-E-RABList.h" +#include "S1ap-E-RABItem.h" +#include "S1ap-E-RABLevelQoSParameters.h" +#include "S1ap-EUTRAN-CGI.h" +#include "S1ap-ExtendedRNC-ID.h" +#include "S1ap-ForbiddenInterRATs.h" +#include "S1ap-ForbiddenTAs.h" +#include "S1ap-ForbiddenTAs-Item.h" +#include "S1ap-ForbiddenTACs.h" +#include "S1ap-ForbiddenLAs.h" +#include "S1ap-ForbiddenLAs-Item.h" +#include "S1ap-ForbiddenLACs.h" +#include "S1ap-GBR-QosInformation.h" +#include "S1ap-GTP-TEID.h" +#include "S1ap-GUMMEI.h" +#include "S1ap-HandoverRestrictionList.h" +#include "S1ap-HandoverType.h" +#include "S1ap-HFN.h" +#include "S1ap-IMSI.h" +#include "S1ap-IntegrityProtectionAlgorithms.h" +#include "S1ap-InterfacesToTrace.h" +#include "S1ap-LAC.h" +#include "S1ap-LAI.h" +#include "S1ap-LastVisitedCell-Item.h" +#include "S1ap-LastVisitedEUTRANCellInformation.h" +#include "S1ap-LastVisitedUTRANCellInformation.h" +#include "S1ap-LastVisitedGERANCellInformation.h" +#include "S1ap-L3-Information.h" +#include "S1ap-MessageIdentifier.h" +#include "S1ap-MMEname.h" +#include "S1ap-MME-Group-ID.h" +#include "S1ap-MME-Code.h" +#include "S1ap-M-TMSI.h" +#include "S1ap-MSClassmark2.h" +#include "S1ap-MSClassmark3.h" +#include "S1ap-NAS-PDU.h" +#include "S1ap-NASSecurityParametersfromE-UTRAN.h" +#include "S1ap-NASSecurityParameterstoE-UTRAN.h" +#include "S1ap-NumberofBroadcastRequest.h" +#include "S1ap-NumberOfBroadcasts.h" +#include "S1ap-OldBSS-ToNewBSS-Information.h" +#include "S1ap-OverloadAction.h" +#include "S1ap-OverloadResponse.h" +#include "S1ap-PagingDRX.h" +#include "S1ap-PDCP-SN.h" +#include "S1ap-PLMNidentity.h" +#include "S1ap-Pre-emptionCapability.h" +#include "S1ap-Pre-emptionVulnerability.h" +#include "S1ap-PriorityLevel.h" +#include "S1ap-QCI.h" +#include "S1ap-ReceiveStatusofULPDCPSDUs.h" +#include "S1ap-RelativeMMECapacity.h" +#include "S1ap-RAC.h" +#include "S1ap-RequestType.h" +#include "S1ap-RIMTransfer.h" +#include "S1ap-RIMInformation.h" +#include "S1ap-RIMRoutingAddress.h" +#include "S1ap-ReportArea.h" +#include "S1ap-RepetitionPeriod.h" +#include "S1ap-RNC-ID.h" +#include "S1ap-RRC-Container.h" +#include "S1ap-RRC-Establishment-Cause.h" +#include "S1ap-SecurityKey.h" +#include "S1ap-SecurityContext.h" +#include "S1ap-SerialNumber.h" +#include "S1ap-SONInformation.h" +#include "S1ap-SONInformationRequest.h" +#include "S1ap-SONInformationReply.h" +#include "S1ap-SONConfigurationTransfer.h" +#include "S1ap-Source-ToTarget-TransparentContainer.h" +#include "S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h" +#include "S1ap-SourceeNB-ID.h" +#include "S1ap-SRVCCOperationPossible.h" +#include "S1ap-SRVCCHOIndication.h" +#include "S1ap-SourceeNB-ToTargeteNB-TransparentContainer.h" +#include "S1ap-SourceRNC-ToTargetRNC-TransparentContainer.h" +#include "S1ap-ServedGUMMEIs.h" +#include "S1ap-ServedGUMMEIsItem.h" +#include "S1ap-ServedGroupIDs.h" +#include "S1ap-ServedMMECs.h" +#include "S1ap-ServedPLMNs.h" +#include "S1ap-SubscriberProfileIDforRFP.h" +#include "S1ap-SupportedTAs.h" +#include "S1ap-SupportedTAs-Item.h" +#include "S1ap-S-TMSI.h" +#include "S1ap-TAC.h" +#include "S1ap-TAIItem.h" +#include "S1ap-TAIList.h" +#include "S1ap-TAIListforWarning.h" +#include "S1ap-TAI.h" +#include "S1ap-TAI-Broadcast.h" +#include "S1ap-TAI-Broadcast-Item.h" +#include "S1ap-CompletedCellinTAI.h" +#include "S1ap-CompletedCellinTAI-Item.h" +#include "S1ap-TargetID.h" +#include "S1ap-TargeteNB-ID.h" +#include "S1ap-TargetRNC-ID.h" +#include "S1ap-TargeteNB-ToSourceeNB-TransparentContainer.h" +#include "S1ap-Target-ToSource-TransparentContainer.h" +#include "S1ap-TargetRNC-ToSourceRNC-TransparentContainer.h" +#include "S1ap-TargetBSS-ToSourceBSS-TransparentContainer.h" +#include "S1ap-TimeToWait.h" +#include "S1ap-Time-UE-StayedInCell.h" +#include "S1ap-TransportLayerAddress.h" +#include "S1ap-TraceActivation.h" +#include "S1ap-TraceDepth.h" +#include "S1ap-E-UTRAN-Trace-ID.h" +#include "S1ap-TypeOfError.h" +#include "S1ap-UEAggregateMaximumBitrate.h" +#include "S1ap-UE-associatedLogicalS1-ConnectionItem.h" +#include "S1ap-UEIdentityIndexValue.h" +#include "S1ap-UE-HistoryInformation.h" +#include "S1ap-UEPagingID.h" +#include "S1ap-UERadioCapability.h" +#include "S1ap-UESecurityCapabilities.h" +#include "S1ap-WarningAreaList.h" +#include "S1ap-WarningType.h" +#include "S1ap-WarningSecurityInfo.h" +#include "S1ap-WarningMessageContents.h" +#include "S1ap-X2TNLConfigurationInfo.h" +#include "S1ap-CriticalityDiagnostics.h" +#include "S1ap-CriticalityDiagnostics-IE-List.h" +#include "S1ap-ResetType.h" +#include "S1ap-Inter-SystemInformationTransferType.h" +#include "S1ap-UE-S1AP-IDs.h" +#include "S1ap-UE-S1AP-ID-pair.h" +#include "S1ap-MME-UE-S1AP-ID.h" +#include "S1ap-ENB-UE-S1AP-ID.h" +#include "S1ap-TBCD-STRING.h" +#include "S1ap-InitiatingMessage.h" +#include "S1ap-SuccessfulOutcome.h" +#include "S1ap-UnsuccessfulOutcome.h" +#include "S1ap-HandoverRequired.h" +#include "S1ap-HandoverCommand.h" +#include "S1ap-HandoverNotify.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-RABReleaseIndication.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-UEContextReleaseRequest.h" +#include "S1ap-Paging.h" +#include "S1ap-DownlinkNASTransport.h" +#include "S1ap-InitialUEMessage.h" +#include "S1ap-UplinkNASTransport.h" +#include "S1ap-NASNonDeliveryIndication.h" +#include "S1ap-HandoverCancel.h" +#include "S1ap-HandoverCancelAcknowledge.h" +#include "S1ap-Reset.h" +#include "S1ap-ResetAcknowledge.h" +#include "S1ap-S1SetupResponse.h" +#include "S1ap-S1SetupRequest.h" +#include "S1ap-S1SetupFailure.h" +#include "S1ap-ErrorIndication.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-DownlinkS1cdma2000tunneling.h" +#include "S1ap-UplinkS1cdma2000tunneling.h" +#include "S1ap-UEContextModificationRequest.h" +#include "S1ap-UEContextModificationResponse.h" +#include "S1ap-UEContextModificationFailure.h" +#include "S1ap-UECapabilityInfoIndication.h" +#include "S1ap-UEContextReleaseCommand.h" +#include "S1ap-UEContextReleaseComplete.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-WriteReplaceWarningRequest.h" +#include "S1ap-WriteReplaceWarningResponse.h" +#include "S1ap-ENBDirectInformationTransfer.h" +#include "S1ap-MMEDirectInformationTransfer.h" +#include "S1ap-ENBConfigurationTransfer.h" +#include "S1ap-MMEConfigurationTransfer.h" +#include "S1ap-PrivateMessage.h" +#include "S1ap-E-RABReleaseItemBearerRelComp.h" +#include "S1ap-E-RABToBeSwitchedDLList.h" +#include "S1ap-E-RABToBeSwitchedDLItem.h" +#include "S1ap-E-RABToBeSwitchedULList.h" +#include "S1ap-E-RABToBeSwitchedULItem.h" +#include "S1ap-E-RABToBeSetupListBearerSUReq.h" +#include "S1ap-E-RABToBeSetupItemBearerSUReq.h" +#include "S1ap-E-RABDataForwardingItem.h" +#include "S1ap-E-RABToBeSetupListHOReq.h" +#include "S1ap-E-RABToBeSetupItemHOReq.h" +#include "S1ap-E-RABAdmittedList.h" +#include "S1ap-E-RABAdmittedItem.h" +#include "S1ap-E-RABFailedToSetupListHOReqAck.h" +#include "S1ap-E-RABToBeSetupItemCtxtSUReq.h" +#include "S1ap-E-RABToBeSetupListCtxtSUReq.h" +#include "S1ap-E-RABSetupItemBearerSURes.h" +#include "S1ap-E-RABSetupListBearerSURes.h" +#include "S1ap-E-RABSetupItemCtxtSURes.h" +#include "S1ap-E-RABSetupListCtxtSURes.h" +#include "S1ap-E-RABReleaseListBearerRelComp.h" +#include "S1ap-E-RABModifyItemBearerModRes.h" +#include "S1ap-E-RABModifyListBearerModRes.h" +#include "S1ap-E-RABFailedToSetupItemHOReqAck.h" +#include "S1ap-E-RABFailedToSetupListHOReqAck.h" +#include "S1ap-E-RABToBeModifiedItemBearerModReq.h" +#include "S1ap-E-RABToBeModifiedListBearerModReq.h" +#include "S1ap-UE-associatedLogicalS1-ConnectionListResAck.h" +#include "S1ap-E-RABSubjecttoDataForwardingList.h" +#include "S1ap-IE.h" +#include "S1AP-PDU.h" + +// UPDATE RELEASE 9 +# include "S1ap-BroadcastCancelledAreaList.h" +# include "S1ap-CancelledCellinEAI.h" +# include "S1ap-CancelledCellinEAI-Item.h" +# include "S1ap-CancelledCellinTAI.h" +# include "S1ap-CancelledCellinTAI-Item.h" +# include "S1ap-CellAccessMode.h" +# include "S1ap-CellID-Cancelled.h" +# include "S1ap-CellID-Cancelled-Item.h" +# include "S1ap-ConcurrentWarningMessageIndicator.h" +# include "S1ap-CSGMembershipStatus.h" +# include "S1ap-Data-Forwarding-Not-Possible.h" +# include "S1ap-EmergencyAreaID-Cancelled.h" +# include "S1ap-EmergencyAreaID-Cancelled-Item.h" +# include "S1ap-E-RABList.h" +# include "S1ap-EUTRANRoundTripDelayEstimationInfo.h" +# include "S1ap-ExtendedRepetitionPeriod.h" +# include "S1ap-LPPa-PDU.h" +# include "S1ap-PS-ServiceNotAvailable.h" +# include "S1ap-Routing-ID.h" +# include "S1ap-StratumLevel.h" +# include "S1ap-SynchronizationStatus.h" +# include "S1ap-TimeSynchronizationInfo.h" +# include "S1ap-TAI-Cancelled.h" +# include "S1ap-TAI-Cancelled-Item.h" +# include "S1ap-KillRequest.h" +# include "S1ap-KillResponse.h" +# include "S1ap-DownlinkUEAssociatedLPPaTransport.h" +# include "S1ap-UplinkUEAssociatedLPPaTransport.h" +# include "S1ap-DownlinkNonUEAssociatedLPPaTransport.h" +# include "S1ap-UplinkNonUEAssociatedLPPaTransport.h" + +// UPDATE RELEASE 10 +# include "S1ap-PagingPriority.h" +# include "S1ap-RelayNode-Indicator.h" +# include "S1ap-GWContextReleaseIndication.h" +# include "S1ap-MMERelaySupportIndicator.h" +# include "S1ap-ManagementBasedMDTAllowed.h" +# include "S1ap-PrivacyIndicator.h" +# include "S1ap-TrafficLoadReductionIndication.h" +# include "S1ap-GUMMEIList.h" + +/* Checking version of ASN1C compiler */ +#if (ASN1C_ENVIRONMENT_VERSION < ASN1C_MINIMUM_VERSION) +# error "You are compiling s1ap with the wrong version of ASN1C" +#endif + + +extern int asn_debug; +extern int asn1_xer_print; + +# include "mme_default_values.h" + +//Forward declaration +struct s1ap_message_s; + +/** \brief Encode a successfull outcome message + \param buffer pointer to buffer in which data will be encoded + \param length pointer to the length of buffer + \param procedureCode Procedure code for the message + \param criticality Criticality of the message + \param td ASN1C type descriptor of the sptr + \param sptr Dereferenced pointer to the structure to encode + @returns size in bytes encded on success or 0 on failure + **/ +ssize_t s1ap_generate_successfull_outcome( + uint8_t **buffer, + uint32_t *length, + S1ap_ProcedureCode_t procedureCode, + S1ap_Criticality_t criticality, + asn_TYPE_descriptor_t *td, + void *sptr); + +/** \brief Encode an initiating message + \param buffer pointer to buffer in which data will be encoded + \param length pointer to the length of buffer + \param procedureCode Procedure code for the message + \param criticality Criticality of the message + \param td ASN1C type descriptor of the sptr + \param sptr Dereferenced pointer to the structure to encode + @returns size in bytes encded on success or 0 on failure + **/ +ssize_t s1ap_generate_initiating_message( + uint8_t **buffer, + uint32_t *length, + S1ap_ProcedureCode_t procedureCode, + S1ap_Criticality_t criticality, + asn_TYPE_descriptor_t *td, + void *sptr); + +/** \brief Encode an unsuccessfull outcome message + \param buffer pointer to buffer in which data will be encoded + \param length pointer to the length of buffer + \param procedureCode Procedure code for the message + \param criticality Criticality of the message + \param td ASN1C type descriptor of the sptr + \param sptr Dereferenced pointer to the structure to encode + @returns size in bytes encded on success or 0 on failure + **/ +ssize_t s1ap_generate_unsuccessfull_outcome( + uint8_t **buffer, + uint32_t *length, + S1ap_ProcedureCode_t procedureCode, + S1ap_Criticality_t criticality, + asn_TYPE_descriptor_t *td, + void *sptr); + +/** \brief Generate a new IE + \param id Protocol ie id of the IE + \param criticality Criticality of the IE + \param type ASN1 type descriptor of the IE value + \param sptr Structure to be encoded in the value field + @returns a pointer to the newly created IE structure or NULL in case of failure + **/ +S1ap_IE_t *s1ap_new_ie(S1ap_ProtocolIE_ID_t id, + S1ap_Criticality_t criticality, + asn_TYPE_descriptor_t *type, + void *sptr); + +/** \brief Handle criticality + \param criticality Criticality of the IE + @returns void + **/ +void s1ap_handle_criticality(S1ap_Criticality_t criticality); + +#endif /* FILE_S1AP_COMMON_SEEN */ diff --git a/lib/asn/s1ap_decoder.c b/lib/asn/s1ap_decoder.c new file mode 100644 index 0000000000..f6bc501226 --- /dev/null +++ b/lib/asn/s1ap_decoder.c @@ -0,0 +1,7919 @@ +/* + * Copyright (c) 2015, EURECOM (www.eurecom.fr) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those + * of the authors and should not be interpreted as representing official policies, + * either expressed or implied, of the FreeBSD Project. + */ + +/******************************************************************************* + * This file had been created by asn1tostruct.py script v1.0.2 + * Please do not modify this file but regenerate it via script. + * Created on: 2017-02-02 21:30:57.614475 by acetcom + * from ['S1AP-PDU.asn'] + ******************************************************************************/ +#include "s1ap_common.h" +#include "s1ap_ies_defs.h" +#include "log.h" + +int s1ap_decode_s1ap_e_rabfailedtosetupitemhoreqackies( + S1ap_E_RABFailedtoSetupItemHOReqAckIEs_t *s1ap_E_RABFailedtoSetupItemHOReqAckIEs, + ANY_t *any_p) { + + S1ap_E_RABFailedtoSetupListHOReqAck_t s1ap_E_RABFailedtoSetupListHOReqAck; + S1ap_E_RABFailedtoSetupListHOReqAck_t *s1ap_E_RABFailedtoSetupListHOReqAck_p = &s1ap_E_RABFailedtoSetupListHOReqAck; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABFailedtoSetupItemHOReqAckIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABFailedtoSetupItemHOReqAckIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, (void**)&s1ap_E_RABFailedtoSetupListHOReqAck_p); + + for (i = 0; i < s1ap_E_RABFailedtoSetupListHOReqAck_p->s1ap_E_RABFailedtoSetupListHOReqAck_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABFailedtoSetupListHOReqAck_p->s1ap_E_RABFailedtoSetupListHOReqAck_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABFailedtoSetupItemHOReqAck: + { + S1ap_E_RABFailedToSetupItemHOReqAck_t *s1apERABFailedToSetupItemHOReqAck_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABFailedToSetupItemHOReqAck, (void**)&s1apERABFailedToSetupItemHOReqAck_p); + if (tempDecoded < 0 || s1apERABFailedToSetupItemHOReqAck_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABFailedtoSetupItemHOReqAck failed\n"); + if (s1apERABFailedToSetupItemHOReqAck_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABFailedToSetupItemHOReqAck, s1apERABFailedToSetupItemHOReqAck_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABFailedToSetupItemHOReqAck, s1apERABFailedToSetupItemHOReqAck_p); + memcpy(&s1ap_E_RABFailedtoSetupItemHOReqAckIEs->e_RABFailedtoSetupItemHOReqAck, s1apERABFailedToSetupItemHOReqAck_p, sizeof(S1ap_E_RABFailedToSetupItemHOReqAck_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabfailedtosetupitemhoreqackies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_deactivatetraceies( + S1ap_DeactivateTraceIEs_t *s1ap_DeactivateTraceIEs, + ANY_t *any_p) { + + S1ap_DeactivateTrace_t s1ap_DeactivateTrace; + S1ap_DeactivateTrace_t *s1ap_DeactivateTrace_p = &s1ap_DeactivateTrace; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_DeactivateTraceIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_DeactivateTraceIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_DeactivateTrace, (void**)&s1ap_DeactivateTrace_p); + + for (i = 0; i < s1ap_DeactivateTrace_p->s1ap_DeactivateTrace_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_DeactivateTrace_p->s1ap_DeactivateTrace_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_DeactivateTraceIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_DeactivateTraceIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID: + { + S1ap_E_UTRAN_Trace_ID_t *s1apEUTRANTraceID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_UTRAN_Trace_ID, (void**)&s1apEUTRANTraceID_p); + if (tempDecoded < 0 || s1apEUTRANTraceID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_UTRAN_Trace_ID failed\n"); + if (s1apEUTRANTraceID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_UTRAN_Trace_ID, s1apEUTRANTraceID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_UTRAN_Trace_ID, s1apEUTRANTraceID_p); + memcpy(&s1ap_DeactivateTraceIEs->e_UTRAN_Trace_ID, s1apEUTRANTraceID_p, sizeof(S1ap_E_UTRAN_Trace_ID_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_deactivatetraceies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_enbdirectinformationtransferies( + S1ap_ENBDirectInformationTransferIEs_t *s1ap_ENBDirectInformationTransferIEs, + ANY_t *any_p) { + + S1ap_ENBDirectInformationTransfer_t s1ap_ENBDirectInformationTransfer; + S1ap_ENBDirectInformationTransfer_t *s1ap_ENBDirectInformationTransfer_p = &s1ap_ENBDirectInformationTransfer; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ENBDirectInformationTransferIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ENBDirectInformationTransferIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_ENBDirectInformationTransfer, (void**)&s1ap_ENBDirectInformationTransfer_p); + + for (i = 0; i < s1ap_ENBDirectInformationTransfer_p->s1ap_ENBDirectInformationTransfer_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_ENBDirectInformationTransfer_p->s1ap_ENBDirectInformationTransfer_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Inter_SystemInformationTransferTypeEDT: + { + S1ap_Inter_SystemInformationTransferType_t *s1apInterSystemInformationTransferType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Inter_SystemInformationTransferType, (void**)&s1apInterSystemInformationTransferType_p); + if (tempDecoded < 0 || s1apInterSystemInformationTransferType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE inter_SystemInformationTransferTypeEDT failed\n"); + if (s1apInterSystemInformationTransferType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Inter_SystemInformationTransferType, s1apInterSystemInformationTransferType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Inter_SystemInformationTransferType, s1apInterSystemInformationTransferType_p); + memcpy(&s1ap_ENBDirectInformationTransferIEs->inter_SystemInformationTransferTypeEDT, s1apInterSystemInformationTransferType_p, sizeof(S1ap_Inter_SystemInformationTransferType_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_enbdirectinformationtransferies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabreleaseresponseies( + S1ap_E_RABReleaseResponseIEs_t *s1ap_E_RABReleaseResponseIEs, + ANY_t *any_p) { + + S1ap_E_RABReleaseResponse_t s1ap_E_RABReleaseResponse; + S1ap_E_RABReleaseResponse_t *s1ap_E_RABReleaseResponse_p = &s1ap_E_RABReleaseResponse; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABReleaseResponseIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABReleaseResponseIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABReleaseResponse, (void**)&s1ap_E_RABReleaseResponse_p); + + for (i = 0; i < s1ap_E_RABReleaseResponse_p->s1ap_E_RABReleaseResponse_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABReleaseResponse_p->s1ap_E_RABReleaseResponse_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_E_RABReleaseResponseIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_E_RABReleaseResponseIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABReleaseListBearerRelComp: + { + S1ap_E_RABReleaseListBearerRelComp_t *s1apERABReleaseListBearerRelComp_p = NULL; + s1ap_E_RABReleaseResponseIEs->presenceMask |= S1AP_E_RABRELEASERESPONSEIES_E_RABRELEASELISTBEARERRELCOMP_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABReleaseListBearerRelComp, (void**)&s1apERABReleaseListBearerRelComp_p); + if (tempDecoded < 0 || s1apERABReleaseListBearerRelComp_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABReleaseListBearerRelComp failed\n"); + if (s1apERABReleaseListBearerRelComp_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABReleaseListBearerRelComp, s1apERABReleaseListBearerRelComp_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABReleaseListBearerRelComp, s1apERABReleaseListBearerRelComp_p); + if (s1ap_decode_s1ap_e_rabreleaselistbearerrelcomp(&s1ap_E_RABReleaseResponseIEs->e_RABReleaseListBearerRelComp, s1apERABReleaseListBearerRelComp_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABReleaseListBearerRelComp failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABReleaseListBearerRelComp, s1apERABReleaseListBearerRelComp_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABFailedToReleaseList: + { + S1ap_E_RABList_t *s1apERABList_p = NULL; + s1ap_E_RABReleaseResponseIEs->presenceMask |= S1AP_E_RABRELEASERESPONSEIES_E_RABFAILEDTORELEASELIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); + if (tempDecoded < 0 || s1apERABList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABFailedToReleaseList failed\n"); + if (s1apERABList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABList, s1apERABList_p); + if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABReleaseResponseIEs->e_RABFailedToReleaseList, s1apERABList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_E_RABReleaseResponseIEs->presenceMask |= S1AP_E_RABRELEASERESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_E_RABReleaseResponseIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabreleaseresponseies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uplinknonueassociatedlppatransport_ies( + S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkNonUEAssociatedLPPaTransport_IEs, + ANY_t *any_p) { + + S1ap_UplinkNonUEAssociatedLPPaTransport_t s1ap_UplinkNonUEAssociatedLPPaTransport; + S1ap_UplinkNonUEAssociatedLPPaTransport_t *s1ap_UplinkNonUEAssociatedLPPaTransport_p = &s1ap_UplinkNonUEAssociatedLPPaTransport; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UplinkNonUEAssociatedLPPaTransport_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UplinkNonUEAssociatedLPPaTransport_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UplinkNonUEAssociatedLPPaTransport, (void**)&s1ap_UplinkNonUEAssociatedLPPaTransport_p); + + for (i = 0; i < s1ap_UplinkNonUEAssociatedLPPaTransport_p->s1ap_UplinkNonUEAssociatedLPPaTransport_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UplinkNonUEAssociatedLPPaTransport_p->s1ap_UplinkNonUEAssociatedLPPaTransport_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Routing_ID: + { + S1ap_Routing_ID_t *s1apRoutingID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Routing_ID, (void**)&s1apRoutingID_p); + if (tempDecoded < 0 || s1apRoutingID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE routing_ID failed\n"); + if (s1apRoutingID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Routing_ID, s1apRoutingID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Routing_ID, s1apRoutingID_p); + memcpy(&s1ap_UplinkNonUEAssociatedLPPaTransport_IEs->routing_ID, s1apRoutingID_p, sizeof(S1ap_Routing_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_LPPa_PDU: + { + S1ap_LPPa_PDU_t *s1apLPPaPDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_LPPa_PDU, (void**)&s1apLPPaPDU_p); + if (tempDecoded < 0 || s1apLPPaPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE lpPa_PDU failed\n"); + if (s1apLPPaPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_LPPa_PDU, s1apLPPaPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_LPPa_PDU, s1apLPPaPDU_p); + memcpy(&s1ap_UplinkNonUEAssociatedLPPaTransport_IEs->lpPa_PDU, s1apLPPaPDU_p, sizeof(S1ap_LPPa_PDU_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinknonueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabtobesetupitemhoreqies( + S1ap_E_RABToBeSetupItemHOReqIEs_t *s1ap_E_RABToBeSetupItemHOReqIEs, + ANY_t *any_p) { + + S1ap_E_RABToBeSetupListHOReq_t s1ap_E_RABToBeSetupListHOReq; + S1ap_E_RABToBeSetupListHOReq_t *s1ap_E_RABToBeSetupListHOReq_p = &s1ap_E_RABToBeSetupListHOReq; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABToBeSetupItemHOReqIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABToBeSetupItemHOReqIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABToBeSetupListHOReq, (void**)&s1ap_E_RABToBeSetupListHOReq_p); + + for (i = 0; i < s1ap_E_RABToBeSetupListHOReq_p->s1ap_E_RABToBeSetupListHOReq_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABToBeSetupListHOReq_p->s1ap_E_RABToBeSetupListHOReq_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemHOReq: + { + S1ap_E_RABToBeSetupItemHOReq_t *s1apERABToBeSetupItemHOReq_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupItemHOReq, (void**)&s1apERABToBeSetupItemHOReq_p); + if (tempDecoded < 0 || s1apERABToBeSetupItemHOReq_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSetupItemHOReq failed\n"); + if (s1apERABToBeSetupItemHOReq_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupItemHOReq, s1apERABToBeSetupItemHOReq_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSetupItemHOReq, s1apERABToBeSetupItemHOReq_p); + memcpy(&s1ap_E_RABToBeSetupItemHOReqIEs->e_RABToBeSetupItemHOReq, s1apERABToBeSetupItemHOReq_p, sizeof(S1ap_E_RABToBeSetupItemHOReq_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabtobesetupitemhoreqies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_tracestarties( + S1ap_TraceStartIEs_t *s1ap_TraceStartIEs, + ANY_t *any_p) { + + S1ap_TraceStart_t s1ap_TraceStart; + S1ap_TraceStart_t *s1ap_TraceStart_p = &s1ap_TraceStart; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_TraceStartIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_TraceStartIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_TraceStart, (void**)&s1ap_TraceStart_p); + + for (i = 0; i < s1ap_TraceStart_p->s1ap_TraceStart_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_TraceStart_p->s1ap_TraceStart_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_TraceStartIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_TraceStartIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_TraceActivation: + { + S1ap_TraceActivation_t *s1apTraceActivation_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TraceActivation, (void**)&s1apTraceActivation_p); + if (tempDecoded < 0 || s1apTraceActivation_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE traceActivation failed\n"); + if (s1apTraceActivation_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TraceActivation, s1apTraceActivation_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TraceActivation, s1apTraceActivation_p); + memcpy(&s1ap_TraceStartIEs->traceActivation, s1apTraceActivation_p, sizeof(S1ap_TraceActivation_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_tracestarties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_writereplacewarningresponseies( + S1ap_WriteReplaceWarningResponseIEs_t *s1ap_WriteReplaceWarningResponseIEs, + ANY_t *any_p) { + + S1ap_WriteReplaceWarningResponse_t s1ap_WriteReplaceWarningResponse; + S1ap_WriteReplaceWarningResponse_t *s1ap_WriteReplaceWarningResponse_p = &s1ap_WriteReplaceWarningResponse; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_WriteReplaceWarningResponseIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_WriteReplaceWarningResponseIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_WriteReplaceWarningResponse, (void**)&s1ap_WriteReplaceWarningResponse_p); + + for (i = 0; i < s1ap_WriteReplaceWarningResponse_p->s1ap_WriteReplaceWarningResponse_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_WriteReplaceWarningResponse_p->s1ap_WriteReplaceWarningResponse_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MessageIdentifier: + { + S1ap_MessageIdentifier_t *s1apMessageIdentifier_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MessageIdentifier, (void**)&s1apMessageIdentifier_p); + if (tempDecoded < 0 || s1apMessageIdentifier_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE messageIdentifier failed\n"); + if (s1apMessageIdentifier_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MessageIdentifier, s1apMessageIdentifier_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MessageIdentifier, s1apMessageIdentifier_p); + memcpy(&s1ap_WriteReplaceWarningResponseIEs->messageIdentifier, s1apMessageIdentifier_p, sizeof(S1ap_MessageIdentifier_t)); + } break; + case S1ap_ProtocolIE_ID_id_SerialNumber: + { + S1ap_SerialNumber_t *s1apSerialNumber_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SerialNumber, (void**)&s1apSerialNumber_p); + if (tempDecoded < 0 || s1apSerialNumber_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE serialNumber failed\n"); + if (s1apSerialNumber_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SerialNumber, s1apSerialNumber_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SerialNumber, s1apSerialNumber_p); + memcpy(&s1ap_WriteReplaceWarningResponseIEs->serialNumber, s1apSerialNumber_p, sizeof(S1ap_SerialNumber_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_BroadcastCompletedAreaList: + { + S1ap_BroadcastCompletedAreaList_t *s1apBroadcastCompletedAreaList_p = NULL; + s1ap_WriteReplaceWarningResponseIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGRESPONSEIES_BROADCASTCOMPLETEDAREALIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_BroadcastCompletedAreaList, (void**)&s1apBroadcastCompletedAreaList_p); + if (tempDecoded < 0 || s1apBroadcastCompletedAreaList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE broadcastCompletedAreaList failed\n"); + if (s1apBroadcastCompletedAreaList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_BroadcastCompletedAreaList, s1apBroadcastCompletedAreaList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_BroadcastCompletedAreaList, s1apBroadcastCompletedAreaList_p); + memcpy(&s1ap_WriteReplaceWarningResponseIEs->broadcastCompletedAreaList, s1apBroadcastCompletedAreaList_p, sizeof(S1ap_BroadcastCompletedAreaList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_WriteReplaceWarningResponseIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_WriteReplaceWarningResponseIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_writereplacewarningresponseies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handovercancelies( + S1ap_HandoverCancelIEs_t *s1ap_HandoverCancelIEs, + ANY_t *any_p) { + + S1ap_HandoverCancel_t s1ap_HandoverCancel; + S1ap_HandoverCancel_t *s1ap_HandoverCancel_p = &s1ap_HandoverCancel; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverCancelIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverCancelIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverCancel, (void**)&s1ap_HandoverCancel_p); + + for (i = 0; i < s1ap_HandoverCancel_p->s1ap_HandoverCancel_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverCancel_p->s1ap_HandoverCancel_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverCancelIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_HandoverCancelIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_HandoverCancelIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handovercancelies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handoverpreparationfailureies( + S1ap_HandoverPreparationFailureIEs_t *s1ap_HandoverPreparationFailureIEs, + ANY_t *any_p) { + + S1ap_HandoverPreparationFailure_t s1ap_HandoverPreparationFailure; + S1ap_HandoverPreparationFailure_t *s1ap_HandoverPreparationFailure_p = &s1ap_HandoverPreparationFailure; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverPreparationFailureIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverPreparationFailureIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverPreparationFailure, (void**)&s1ap_HandoverPreparationFailure_p); + + for (i = 0; i < s1ap_HandoverPreparationFailure_p->s1ap_HandoverPreparationFailure_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverPreparationFailure_p->s1ap_HandoverPreparationFailure_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverPreparationFailureIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_HandoverPreparationFailureIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_HandoverPreparationFailureIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_HandoverPreparationFailureIEs->presenceMask |= S1AP_HANDOVERPREPARATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_HandoverPreparationFailureIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handoverpreparationfailureies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uecontextreleaserequest_ies( + S1ap_UEContextReleaseRequest_IEs_t *s1ap_UEContextReleaseRequest_IEs, + ANY_t *any_p) { + + S1ap_UEContextReleaseRequest_t s1ap_UEContextReleaseRequest; + S1ap_UEContextReleaseRequest_t *s1ap_UEContextReleaseRequest_p = &s1ap_UEContextReleaseRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UEContextReleaseRequest_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UEContextReleaseRequest_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UEContextReleaseRequest, (void**)&s1ap_UEContextReleaseRequest_p); + + for (i = 0; i < s1ap_UEContextReleaseRequest_p->s1ap_UEContextReleaseRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UEContextReleaseRequest_p->s1ap_UEContextReleaseRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UEContextReleaseRequest_IEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UEContextReleaseRequest_IEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_UEContextReleaseRequest_IEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_GWContextReleaseIndication: + { + S1ap_GWContextReleaseIndication_t *s1apGWContextReleaseIndication_p = NULL; + s1ap_UEContextReleaseRequest_IEs->presenceMask |= S1AP_UECONTEXTRELEASEREQUEST_IES_GWCONTEXTRELEASEINDICATION_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_GWContextReleaseIndication, (void**)&s1apGWContextReleaseIndication_p); + if (tempDecoded < 0 || s1apGWContextReleaseIndication_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE gwContextReleaseIndication failed\n"); + if (s1apGWContextReleaseIndication_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_GWContextReleaseIndication, s1apGWContextReleaseIndication_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_GWContextReleaseIndication, s1apGWContextReleaseIndication_p); + memcpy(&s1ap_UEContextReleaseRequest_IEs->gwContextReleaseIndication, s1apGWContextReleaseIndication_p, sizeof(S1ap_GWContextReleaseIndication_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uecontextreleaserequest_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabadmitteditemies( + S1ap_E_RABAdmittedItemIEs_t *s1ap_E_RABAdmittedItemIEs, + ANY_t *any_p) { + + S1ap_E_RABAdmittedList_t s1ap_E_RABAdmittedList; + S1ap_E_RABAdmittedList_t *s1ap_E_RABAdmittedList_p = &s1ap_E_RABAdmittedList; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABAdmittedItemIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABAdmittedItemIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABAdmittedList, (void**)&s1ap_E_RABAdmittedList_p); + + for (i = 0; i < s1ap_E_RABAdmittedList_p->s1ap_E_RABAdmittedList_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABAdmittedList_p->s1ap_E_RABAdmittedList_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABAdmittedItem: + { + S1ap_E_RABAdmittedItem_t *s1apERABAdmittedItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABAdmittedItem, (void**)&s1apERABAdmittedItem_p); + if (tempDecoded < 0 || s1apERABAdmittedItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABAdmittedItem failed\n"); + if (s1apERABAdmittedItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABAdmittedItem, s1apERABAdmittedItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABAdmittedItem, s1apERABAdmittedItem_p); + memcpy(&s1ap_E_RABAdmittedItemIEs->e_RABAdmittedItem, s1apERABAdmittedItem_p, sizeof(S1ap_E_RABAdmittedItem_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabadmitteditemies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_initialuemessage_ies( + S1ap_InitialUEMessage_IEs_t *s1ap_InitialUEMessage_IEs, + ANY_t *any_p) { + + S1ap_InitialUEMessage_t s1ap_InitialUEMessage; + S1ap_InitialUEMessage_t *s1ap_InitialUEMessage_p = &s1ap_InitialUEMessage; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_InitialUEMessage_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_InitialUEMessage_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_InitialUEMessage, (void**)&s1ap_InitialUEMessage_p); + + for (i = 0; i < s1ap_InitialUEMessage_p->s1ap_InitialUEMessage_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_InitialUEMessage_p->s1ap_InitialUEMessage_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_InitialUEMessage_IEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_NAS_PDU: + { + S1ap_NAS_PDU_t *s1apNASPDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_NAS_PDU, (void**)&s1apNASPDU_p); + if (tempDecoded < 0 || s1apNASPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE nas_pdu failed\n"); + if (s1apNASPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + memcpy(&s1ap_InitialUEMessage_IEs->nas_pdu, s1apNASPDU_p, sizeof(S1ap_NAS_PDU_t)); + } break; + case S1ap_ProtocolIE_ID_id_TAI: + { + S1ap_TAI_t *s1apTAI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAI, (void**)&s1apTAI_p); + if (tempDecoded < 0 || s1apTAI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE tai failed\n"); + if (s1apTAI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TAI, s1apTAI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TAI, s1apTAI_p); + memcpy(&s1ap_InitialUEMessage_IEs->tai, s1apTAI_p, sizeof(S1ap_TAI_t)); + } break; + case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: + { + S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_EUTRAN_CGI, (void**)&s1apEUTRANCGI_p); + if (tempDecoded < 0 || s1apEUTRANCGI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eutran_cgi failed\n"); + if (s1apEUTRANCGI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + memcpy(&s1ap_InitialUEMessage_IEs->eutran_cgi, s1apEUTRANCGI_p, sizeof(S1ap_EUTRAN_CGI_t)); + } break; + case S1ap_ProtocolIE_ID_id_RRC_Establishment_Cause: + { + S1ap_RRC_Establishment_Cause_t *s1apRRCEstablishmentCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_RRC_Establishment_Cause, (void**)&s1apRRCEstablishmentCause_p); + if (tempDecoded < 0 || s1apRRCEstablishmentCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE rrC_Establishment_Cause failed\n"); + if (s1apRRCEstablishmentCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_RRC_Establishment_Cause, s1apRRCEstablishmentCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_RRC_Establishment_Cause, s1apRRCEstablishmentCause_p); + memcpy(&s1ap_InitialUEMessage_IEs->rrC_Establishment_Cause, s1apRRCEstablishmentCause_p, sizeof(S1ap_RRC_Establishment_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_S_TMSI: + { + S1ap_S_TMSI_t *s1apSTMSI_p = NULL; + s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_S_TMSI_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_S_TMSI, (void**)&s1apSTMSI_p); + if (tempDecoded < 0 || s1apSTMSI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE s_tmsi failed\n"); + if (s1apSTMSI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_S_TMSI, s1apSTMSI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_S_TMSI, s1apSTMSI_p); + memcpy(&s1ap_InitialUEMessage_IEs->s_tmsi, s1apSTMSI_p, sizeof(S1ap_S_TMSI_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSG_Id: + { + S1ap_CSG_Id_t *s1apCSGId_p = NULL; + s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_CSG_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSG_Id, (void**)&s1apCSGId_p); + if (tempDecoded < 0 || s1apCSGId_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csG_Id failed\n"); + if (s1apCSGId_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + memcpy(&s1ap_InitialUEMessage_IEs->csG_Id, s1apCSGId_p, sizeof(S1ap_CSG_Id_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_GUMMEI_ID: + { + S1ap_GUMMEI_t *s1apGUMMEI_p = NULL; + s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_GUMMEI_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_GUMMEI, (void**)&s1apGUMMEI_p); + if (tempDecoded < 0 || s1apGUMMEI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE gummei_id failed\n"); + if (s1apGUMMEI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_GUMMEI, s1apGUMMEI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_GUMMEI, s1apGUMMEI_p); + memcpy(&s1ap_InitialUEMessage_IEs->gummei_id, s1apGUMMEI_p, sizeof(S1ap_GUMMEI_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CellAccessMode: + { + S1ap_CellAccessMode_t *s1apCellAccessMode_p = NULL; + s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_CELLACCESSMODE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CellAccessMode, (void**)&s1apCellAccessMode_p); + if (tempDecoded < 0 || s1apCellAccessMode_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cellAccessMode failed\n"); + if (s1apCellAccessMode_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CellAccessMode, s1apCellAccessMode_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CellAccessMode, s1apCellAccessMode_p); + memcpy(&s1ap_InitialUEMessage_IEs->cellAccessMode, s1apCellAccessMode_p, sizeof(S1ap_CellAccessMode_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_GW_S1ap_TransportLayerAddress: + { + S1ap_TransportLayerAddress_t *s1apTransportLayerAddress_p = NULL; + s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_GW_S1AP_TRANSPORTLAYERADDRESS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TransportLayerAddress, (void**)&s1apTransportLayerAddress_p); + if (tempDecoded < 0 || s1apTransportLayerAddress_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE gW_S1ap_TransportLayerAddress failed\n"); + if (s1apTransportLayerAddress_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TransportLayerAddress, s1apTransportLayerAddress_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TransportLayerAddress, s1apTransportLayerAddress_p); + memcpy(&s1ap_InitialUEMessage_IEs->gW_S1ap_TransportLayerAddress, s1apTransportLayerAddress_p, sizeof(S1ap_TransportLayerAddress_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_RelayNode_Indicator: + { + S1ap_RelayNode_Indicator_t *s1apRelayNodeIndicator_p = NULL; + s1ap_InitialUEMessage_IEs->presenceMask |= S1AP_INITIALUEMESSAGE_IES_RELAYNODE_INDICATOR_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_RelayNode_Indicator, (void**)&s1apRelayNodeIndicator_p); + if (tempDecoded < 0 || s1apRelayNodeIndicator_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE relayNode_Indicator failed\n"); + if (s1apRelayNodeIndicator_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_RelayNode_Indicator, s1apRelayNodeIndicator_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_RelayNode_Indicator, s1apRelayNodeIndicator_p); + memcpy(&s1ap_InitialUEMessage_IEs->relayNode_Indicator, s1apRelayNodeIndicator_p, sizeof(S1ap_RelayNode_Indicator_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_initialuemessage_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_killrequesties( + S1ap_KillRequestIEs_t *s1ap_KillRequestIEs, + ANY_t *any_p) { + + S1ap_KillRequest_t s1ap_KillRequest; + S1ap_KillRequest_t *s1ap_KillRequest_p = &s1ap_KillRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_KillRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_KillRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_KillRequest, (void**)&s1ap_KillRequest_p); + + for (i = 0; i < s1ap_KillRequest_p->s1ap_KillRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_KillRequest_p->s1ap_KillRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MessageIdentifier: + { + S1ap_MessageIdentifier_t *s1apMessageIdentifier_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MessageIdentifier, (void**)&s1apMessageIdentifier_p); + if (tempDecoded < 0 || s1apMessageIdentifier_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE messageIdentifier failed\n"); + if (s1apMessageIdentifier_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MessageIdentifier, s1apMessageIdentifier_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MessageIdentifier, s1apMessageIdentifier_p); + memcpy(&s1ap_KillRequestIEs->messageIdentifier, s1apMessageIdentifier_p, sizeof(S1ap_MessageIdentifier_t)); + } break; + case S1ap_ProtocolIE_ID_id_SerialNumber: + { + S1ap_SerialNumber_t *s1apSerialNumber_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SerialNumber, (void**)&s1apSerialNumber_p); + if (tempDecoded < 0 || s1apSerialNumber_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE serialNumber failed\n"); + if (s1apSerialNumber_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SerialNumber, s1apSerialNumber_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SerialNumber, s1apSerialNumber_p); + memcpy(&s1ap_KillRequestIEs->serialNumber, s1apSerialNumber_p, sizeof(S1ap_SerialNumber_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_WarningAreaList: + { + S1ap_WarningAreaList_t *s1apWarningAreaList_p = NULL; + s1ap_KillRequestIEs->presenceMask |= S1AP_KILLREQUESTIES_WARNINGAREALIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_WarningAreaList, (void**)&s1apWarningAreaList_p); + if (tempDecoded < 0 || s1apWarningAreaList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE warningAreaList failed\n"); + if (s1apWarningAreaList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_WarningAreaList, s1apWarningAreaList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_WarningAreaList, s1apWarningAreaList_p); + memcpy(&s1ap_KillRequestIEs->warningAreaList, s1apWarningAreaList_p, sizeof(S1ap_WarningAreaList_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_killrequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_writereplacewarningrequesties( + S1ap_WriteReplaceWarningRequestIEs_t *s1ap_WriteReplaceWarningRequestIEs, + ANY_t *any_p) { + + S1ap_WriteReplaceWarningRequest_t s1ap_WriteReplaceWarningRequest; + S1ap_WriteReplaceWarningRequest_t *s1ap_WriteReplaceWarningRequest_p = &s1ap_WriteReplaceWarningRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_WriteReplaceWarningRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_WriteReplaceWarningRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_WriteReplaceWarningRequest, (void**)&s1ap_WriteReplaceWarningRequest_p); + + for (i = 0; i < s1ap_WriteReplaceWarningRequest_p->s1ap_WriteReplaceWarningRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_WriteReplaceWarningRequest_p->s1ap_WriteReplaceWarningRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MessageIdentifier: + { + S1ap_MessageIdentifier_t *s1apMessageIdentifier_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MessageIdentifier, (void**)&s1apMessageIdentifier_p); + if (tempDecoded < 0 || s1apMessageIdentifier_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE messageIdentifier failed\n"); + if (s1apMessageIdentifier_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MessageIdentifier, s1apMessageIdentifier_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MessageIdentifier, s1apMessageIdentifier_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->messageIdentifier, s1apMessageIdentifier_p, sizeof(S1ap_MessageIdentifier_t)); + } break; + case S1ap_ProtocolIE_ID_id_SerialNumber: + { + S1ap_SerialNumber_t *s1apSerialNumber_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SerialNumber, (void**)&s1apSerialNumber_p); + if (tempDecoded < 0 || s1apSerialNumber_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE serialNumber failed\n"); + if (s1apSerialNumber_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SerialNumber, s1apSerialNumber_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SerialNumber, s1apSerialNumber_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->serialNumber, s1apSerialNumber_p, sizeof(S1ap_SerialNumber_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_WarningAreaList: + { + S1ap_WarningAreaList_t *s1apWarningAreaList_p = NULL; + s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGAREALIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_WarningAreaList, (void**)&s1apWarningAreaList_p); + if (tempDecoded < 0 || s1apWarningAreaList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE warningAreaList failed\n"); + if (s1apWarningAreaList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_WarningAreaList, s1apWarningAreaList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_WarningAreaList, s1apWarningAreaList_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->warningAreaList, s1apWarningAreaList_p, sizeof(S1ap_WarningAreaList_t)); + } break; + case S1ap_ProtocolIE_ID_id_RepetitionPeriod: + { + S1ap_RepetitionPeriod_t *s1apRepetitionPeriod_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_RepetitionPeriod, (void**)&s1apRepetitionPeriod_p); + if (tempDecoded < 0 || s1apRepetitionPeriod_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE repetitionPeriod failed\n"); + if (s1apRepetitionPeriod_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_RepetitionPeriod, s1apRepetitionPeriod_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_RepetitionPeriod, s1apRepetitionPeriod_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->repetitionPeriod, s1apRepetitionPeriod_p, sizeof(S1ap_RepetitionPeriod_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_ExtendedRepetitionPeriod: + { + S1ap_ExtendedRepetitionPeriod_t *s1apExtendedRepetitionPeriod_p = NULL; + s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_EXTENDEDREPETITIONPERIOD_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ExtendedRepetitionPeriod, (void**)&s1apExtendedRepetitionPeriod_p); + if (tempDecoded < 0 || s1apExtendedRepetitionPeriod_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE extendedRepetitionPeriod failed\n"); + if (s1apExtendedRepetitionPeriod_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ExtendedRepetitionPeriod, s1apExtendedRepetitionPeriod_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ExtendedRepetitionPeriod, s1apExtendedRepetitionPeriod_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->extendedRepetitionPeriod, s1apExtendedRepetitionPeriod_p, sizeof(S1ap_ExtendedRepetitionPeriod_t)); + } break; + case S1ap_ProtocolIE_ID_id_NumberofBroadcastRequest: + { + S1ap_NumberofBroadcastRequest_t *s1apNumberofBroadcastRequest_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_NumberofBroadcastRequest, (void**)&s1apNumberofBroadcastRequest_p); + if (tempDecoded < 0 || s1apNumberofBroadcastRequest_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE numberofBroadcastRequest failed\n"); + if (s1apNumberofBroadcastRequest_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_NumberofBroadcastRequest, s1apNumberofBroadcastRequest_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_NumberofBroadcastRequest, s1apNumberofBroadcastRequest_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->numberofBroadcastRequest, s1apNumberofBroadcastRequest_p, sizeof(S1ap_NumberofBroadcastRequest_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_WarningType: + { + S1ap_WarningType_t *s1apWarningType_p = NULL; + s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGTYPE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_WarningType, (void**)&s1apWarningType_p); + if (tempDecoded < 0 || s1apWarningType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE warningType failed\n"); + if (s1apWarningType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_WarningType, s1apWarningType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_WarningType, s1apWarningType_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->warningType, s1apWarningType_p, sizeof(S1ap_WarningType_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_WarningSecurityInfo: + { + S1ap_WarningSecurityInfo_t *s1apWarningSecurityInfo_p = NULL; + s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGSECURITYINFO_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_WarningSecurityInfo, (void**)&s1apWarningSecurityInfo_p); + if (tempDecoded < 0 || s1apWarningSecurityInfo_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE warningSecurityInfo failed\n"); + if (s1apWarningSecurityInfo_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_WarningSecurityInfo, s1apWarningSecurityInfo_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_WarningSecurityInfo, s1apWarningSecurityInfo_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->warningSecurityInfo, s1apWarningSecurityInfo_p, sizeof(S1ap_WarningSecurityInfo_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_DataCodingScheme: + { + S1ap_DataCodingScheme_t *s1apDataCodingScheme_p = NULL; + s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_DATACODINGSCHEME_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_DataCodingScheme, (void**)&s1apDataCodingScheme_p); + if (tempDecoded < 0 || s1apDataCodingScheme_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE dataCodingScheme failed\n"); + if (s1apDataCodingScheme_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_DataCodingScheme, s1apDataCodingScheme_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_DataCodingScheme, s1apDataCodingScheme_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->dataCodingScheme, s1apDataCodingScheme_p, sizeof(S1ap_DataCodingScheme_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_WarningMessageContents: + { + S1ap_WarningMessageContents_t *s1apWarningMessageContents_p = NULL; + s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGMESSAGECONTENTS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_WarningMessageContents, (void**)&s1apWarningMessageContents_p); + if (tempDecoded < 0 || s1apWarningMessageContents_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE warningMessageContents failed\n"); + if (s1apWarningMessageContents_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_WarningMessageContents, s1apWarningMessageContents_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_WarningMessageContents, s1apWarningMessageContents_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->warningMessageContents, s1apWarningMessageContents_p, sizeof(S1ap_WarningMessageContents_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_ConcurrentWarningMessageIndicator: + { + S1ap_ConcurrentWarningMessageIndicator_t *s1apConcurrentWarningMessageIndicator_p = NULL; + s1ap_WriteReplaceWarningRequestIEs->presenceMask |= S1AP_WRITEREPLACEWARNINGREQUESTIES_CONCURRENTWARNINGMESSAGEINDICATOR_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ConcurrentWarningMessageIndicator, (void**)&s1apConcurrentWarningMessageIndicator_p); + if (tempDecoded < 0 || s1apConcurrentWarningMessageIndicator_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE concurrentWarningMessageIndicator failed\n"); + if (s1apConcurrentWarningMessageIndicator_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ConcurrentWarningMessageIndicator, s1apConcurrentWarningMessageIndicator_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ConcurrentWarningMessageIndicator, s1apConcurrentWarningMessageIndicator_p); + memcpy(&s1ap_WriteReplaceWarningRequestIEs->concurrentWarningMessageIndicator, s1apConcurrentWarningMessageIndicator_p, sizeof(S1ap_ConcurrentWarningMessageIndicator_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_writereplacewarningrequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uecapabilityinfoindicationies( + S1ap_UECapabilityInfoIndicationIEs_t *s1ap_UECapabilityInfoIndicationIEs, + ANY_t *any_p) { + + S1ap_UECapabilityInfoIndication_t s1ap_UECapabilityInfoIndication; + S1ap_UECapabilityInfoIndication_t *s1ap_UECapabilityInfoIndication_p = &s1ap_UECapabilityInfoIndication; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UECapabilityInfoIndicationIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UECapabilityInfoIndicationIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UECapabilityInfoIndication, (void**)&s1ap_UECapabilityInfoIndication_p); + + for (i = 0; i < s1ap_UECapabilityInfoIndication_p->s1ap_UECapabilityInfoIndication_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UECapabilityInfoIndication_p->s1ap_UECapabilityInfoIndication_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UECapabilityInfoIndicationIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UECapabilityInfoIndicationIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_UERadioCapability: + { + S1ap_UERadioCapability_t *s1apUERadioCapability_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UERadioCapability, (void**)&s1apUERadioCapability_p); + if (tempDecoded < 0 || s1apUERadioCapability_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE ueRadioCapability failed\n"); + if (s1apUERadioCapability_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UERadioCapability, s1apUERadioCapability_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UERadioCapability, s1apUERadioCapability_p); + memcpy(&s1ap_UECapabilityInfoIndicationIEs->ueRadioCapability, s1apUERadioCapability_p, sizeof(S1ap_UERadioCapability_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uecapabilityinfoindicationies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabdataforwardingitemies( + S1ap_E_RABDataForwardingItemIEs_t *s1ap_E_RABDataForwardingItemIEs, + ANY_t *any_p) { + + S1ap_E_RABDataForwardingList_t s1ap_E_RABDataForwardingList; + S1ap_E_RABDataForwardingList_t *s1ap_E_RABDataForwardingList_p = &s1ap_E_RABDataForwardingList; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABDataForwardingItemIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABDataForwardingItemIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABDataForwardingList, (void**)&s1ap_E_RABDataForwardingList_p); + + for (i = 0; i < s1ap_E_RABDataForwardingList_p->s1ap_E_RABDataForwardingList_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABDataForwardingList_p->s1ap_E_RABDataForwardingList_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABDataForwardingItem: + { + S1ap_E_RABDataForwardingItem_t *s1apERABDataForwardingItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABDataForwardingItem, (void**)&s1apERABDataForwardingItem_p); + if (tempDecoded < 0 || s1apERABDataForwardingItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABDataForwardingItem failed\n"); + if (s1apERABDataForwardingItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABDataForwardingItem, s1apERABDataForwardingItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABDataForwardingItem, s1apERABDataForwardingItem_p); + memcpy(&s1ap_E_RABDataForwardingItemIEs->e_RABDataForwardingItem, s1apERABDataForwardingItem_p, sizeof(S1ap_E_RABDataForwardingItem_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabdataforwardingitemies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_locationreportingfailureindicationies( + S1ap_LocationReportingFailureIndicationIEs_t *s1ap_LocationReportingFailureIndicationIEs, + ANY_t *any_p) { + + S1ap_LocationReportingFailureIndication_t s1ap_LocationReportingFailureIndication; + S1ap_LocationReportingFailureIndication_t *s1ap_LocationReportingFailureIndication_p = &s1ap_LocationReportingFailureIndication; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_LocationReportingFailureIndicationIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_LocationReportingFailureIndicationIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_LocationReportingFailureIndication, (void**)&s1ap_LocationReportingFailureIndication_p); + + for (i = 0; i < s1ap_LocationReportingFailureIndication_p->s1ap_LocationReportingFailureIndication_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_LocationReportingFailureIndication_p->s1ap_LocationReportingFailureIndication_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_LocationReportingFailureIndicationIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_LocationReportingFailureIndicationIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_LocationReportingFailureIndicationIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_locationreportingfailureindicationies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_initialcontextsetuprequesties( + S1ap_InitialContextSetupRequestIEs_t *s1ap_InitialContextSetupRequestIEs, + ANY_t *any_p) { + + S1ap_InitialContextSetupRequest_t s1ap_InitialContextSetupRequest; + S1ap_InitialContextSetupRequest_t *s1ap_InitialContextSetupRequest_p = &s1ap_InitialContextSetupRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_InitialContextSetupRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_InitialContextSetupRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_InitialContextSetupRequest, (void**)&s1ap_InitialContextSetupRequest_p); + + for (i = 0; i < s1ap_InitialContextSetupRequest_p->s1ap_InitialContextSetupRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_InitialContextSetupRequest_p->s1ap_InitialContextSetupRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: + { + S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void**)&s1apUEAggregateMaximumBitrate_p); + if (tempDecoded < 0 || s1apUEAggregateMaximumBitrate_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uEaggregateMaximumBitrate failed\n"); + if (s1apUEAggregateMaximumBitrate_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->uEaggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p, sizeof(S1ap_UEAggregateMaximumBitrate_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABToBeSetupListCtxtSUReq: + { + S1ap_E_RABToBeSetupListCtxtSUReq_t *s1apERABToBeSetupListCtxtSUReq_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, (void**)&s1apERABToBeSetupListCtxtSUReq_p); + if (tempDecoded < 0 || s1apERABToBeSetupListCtxtSUReq_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSetupListCtxtSUReq failed\n"); + if (s1apERABToBeSetupListCtxtSUReq_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, s1apERABToBeSetupListCtxtSUReq_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, s1apERABToBeSetupListCtxtSUReq_p); + if (s1ap_decode_s1ap_e_rabtobesetuplistctxtsureq(&s1ap_InitialContextSetupRequestIEs->e_RABToBeSetupListCtxtSUReq, s1apERABToBeSetupListCtxtSUReq_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABToBeSetupListCtxtSUReq failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, s1apERABToBeSetupListCtxtSUReq_p); + } + } break; + case S1ap_ProtocolIE_ID_id_UESecurityCapabilities: + { + S1ap_UESecurityCapabilities_t *s1apUESecurityCapabilities_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UESecurityCapabilities, (void**)&s1apUESecurityCapabilities_p); + if (tempDecoded < 0 || s1apUESecurityCapabilities_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE ueSecurityCapabilities failed\n"); + if (s1apUESecurityCapabilities_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UESecurityCapabilities, s1apUESecurityCapabilities_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UESecurityCapabilities, s1apUESecurityCapabilities_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->ueSecurityCapabilities, s1apUESecurityCapabilities_p, sizeof(S1ap_UESecurityCapabilities_t)); + } break; + case S1ap_ProtocolIE_ID_id_SecurityKey: + { + S1ap_SecurityKey_t *s1apSecurityKey_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SecurityKey, (void**)&s1apSecurityKey_p); + if (tempDecoded < 0 || s1apSecurityKey_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE securityKey failed\n"); + if (s1apSecurityKey_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SecurityKey, s1apSecurityKey_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SecurityKey, s1apSecurityKey_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->securityKey, s1apSecurityKey_p, sizeof(S1ap_SecurityKey_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_TraceActivation: + { + S1ap_TraceActivation_t *s1apTraceActivation_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_TRACEACTIVATION_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TraceActivation, (void**)&s1apTraceActivation_p); + if (tempDecoded < 0 || s1apTraceActivation_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE traceActivation failed\n"); + if (s1apTraceActivation_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TraceActivation, s1apTraceActivation_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TraceActivation, s1apTraceActivation_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->traceActivation, s1apTraceActivation_p, sizeof(S1ap_TraceActivation_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_HandoverRestrictionList: + { + S1ap_HandoverRestrictionList_t *s1apHandoverRestrictionList_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_HandoverRestrictionList, (void**)&s1apHandoverRestrictionList_p); + if (tempDecoded < 0 || s1apHandoverRestrictionList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE handoverRestrictionList failed\n"); + if (s1apHandoverRestrictionList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_HandoverRestrictionList, s1apHandoverRestrictionList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_HandoverRestrictionList, s1apHandoverRestrictionList_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->handoverRestrictionList, s1apHandoverRestrictionList_p, sizeof(S1ap_HandoverRestrictionList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_UERadioCapability: + { + S1ap_UERadioCapability_t *s1apUERadioCapability_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_UERADIOCAPABILITY_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UERadioCapability, (void**)&s1apUERadioCapability_p); + if (tempDecoded < 0 || s1apUERadioCapability_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE ueRadioCapability failed\n"); + if (s1apUERadioCapability_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UERadioCapability, s1apUERadioCapability_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UERadioCapability, s1apUERadioCapability_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->ueRadioCapability, s1apUERadioCapability_p, sizeof(S1ap_UERadioCapability_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP: + { + S1ap_SubscriberProfileIDforRFP_t *s1apSubscriberProfileIDforRFP_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SubscriberProfileIDforRFP, (void**)&s1apSubscriberProfileIDforRFP_p); + if (tempDecoded < 0 || s1apSubscriberProfileIDforRFP_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE subscriberProfileIDforRFP failed\n"); + if (s1apSubscriberProfileIDforRFP_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SubscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SubscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->subscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p, sizeof(S1ap_SubscriberProfileIDforRFP_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSFallbackIndicator: + { + S1ap_CSFallbackIndicator_t *s1apCSFallbackIndicator_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_CSFALLBACKINDICATOR_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSFallbackIndicator, (void**)&s1apCSFallbackIndicator_p); + if (tempDecoded < 0 || s1apCSFallbackIndicator_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csFallbackIndicator failed\n"); + if (s1apCSFallbackIndicator_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSFallbackIndicator, s1apCSFallbackIndicator_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSFallbackIndicator, s1apCSFallbackIndicator_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->csFallbackIndicator, s1apCSFallbackIndicator_p, sizeof(S1ap_CSFallbackIndicator_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SRVCCOperationPossible: + { + S1ap_SRVCCOperationPossible_t *s1apSRVCCOperationPossible_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SRVCCOperationPossible, (void**)&s1apSRVCCOperationPossible_p); + if (tempDecoded < 0 || s1apSRVCCOperationPossible_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE srvccOperationPossible failed\n"); + if (s1apSRVCCOperationPossible_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SRVCCOperationPossible, s1apSRVCCOperationPossible_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SRVCCOperationPossible, s1apSRVCCOperationPossible_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->srvccOperationPossible, s1apSRVCCOperationPossible_p, sizeof(S1ap_SRVCCOperationPossible_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSGMembershipStatus: + { + S1ap_CSGMembershipStatus_t *s1apCSGMembershipStatus_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSGMembershipStatus, (void**)&s1apCSGMembershipStatus_p); + if (tempDecoded < 0 || s1apCSGMembershipStatus_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csgMembershipStatus failed\n"); + if (s1apCSGMembershipStatus_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSGMembershipStatus, s1apCSGMembershipStatus_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSGMembershipStatus, s1apCSGMembershipStatus_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->csgMembershipStatus, s1apCSGMembershipStatus_p, sizeof(S1ap_CSGMembershipStatus_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_RegisteredLAI: + { + S1ap_LAI_t *s1apLAI_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_REGISTEREDLAI_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_LAI, (void**)&s1apLAI_p); + if (tempDecoded < 0 || s1apLAI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE registeredLAI failed\n"); + if (s1apLAI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_LAI, s1apLAI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_LAI, s1apLAI_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->registeredLAI, s1apLAI_p, sizeof(S1ap_LAI_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_GUMMEI_ID: + { + S1ap_GUMMEI_t *s1apGUMMEI_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_GUMMEI_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_GUMMEI, (void**)&s1apGUMMEI_p); + if (tempDecoded < 0 || s1apGUMMEI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE gummei_id failed\n"); + if (s1apGUMMEI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_GUMMEI, s1apGUMMEI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_GUMMEI, s1apGUMMEI_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->gummei_id, s1apGUMMEI_p, sizeof(S1ap_GUMMEI_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_MME_UE_S1AP_ID_2_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id_2 failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->mme_ue_s1ap_id_2, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_ManagementBasedMDTAllowed: + { + S1ap_ManagementBasedMDTAllowed_t *s1apManagementBasedMDTAllowed_p = NULL; + s1ap_InitialContextSetupRequestIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ManagementBasedMDTAllowed, (void**)&s1apManagementBasedMDTAllowed_p); + if (tempDecoded < 0 || s1apManagementBasedMDTAllowed_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE managementBasedMDTAllowed failed\n"); + if (s1apManagementBasedMDTAllowed_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ManagementBasedMDTAllowed, s1apManagementBasedMDTAllowed_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ManagementBasedMDTAllowed, s1apManagementBasedMDTAllowed_p); + memcpy(&s1ap_InitialContextSetupRequestIEs->managementBasedMDTAllowed, s1apManagementBasedMDTAllowed_p, sizeof(S1ap_ManagementBasedMDTAllowed_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_initialcontextsetuprequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_locationreporties( + S1ap_LocationReportIEs_t *s1ap_LocationReportIEs, + ANY_t *any_p) { + + S1ap_LocationReport_t s1ap_LocationReport; + S1ap_LocationReport_t *s1ap_LocationReport_p = &s1ap_LocationReport; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_LocationReportIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_LocationReportIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_LocationReport, (void**)&s1ap_LocationReport_p); + + for (i = 0; i < s1ap_LocationReport_p->s1ap_LocationReport_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_LocationReport_p->s1ap_LocationReport_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_LocationReportIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_LocationReportIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: + { + S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_EUTRAN_CGI, (void**)&s1apEUTRANCGI_p); + if (tempDecoded < 0 || s1apEUTRANCGI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eutran_cgi failed\n"); + if (s1apEUTRANCGI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + memcpy(&s1ap_LocationReportIEs->eutran_cgi, s1apEUTRANCGI_p, sizeof(S1ap_EUTRAN_CGI_t)); + } break; + case S1ap_ProtocolIE_ID_id_TAI: + { + S1ap_TAI_t *s1apTAI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAI, (void**)&s1apTAI_p); + if (tempDecoded < 0 || s1apTAI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE tai failed\n"); + if (s1apTAI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TAI, s1apTAI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TAI, s1apTAI_p); + memcpy(&s1ap_LocationReportIEs->tai, s1apTAI_p, sizeof(S1ap_TAI_t)); + } break; + case S1ap_ProtocolIE_ID_id_RequestType: + { + S1ap_RequestType_t *s1apRequestType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_RequestType, (void**)&s1apRequestType_p); + if (tempDecoded < 0 || s1apRequestType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE requestType failed\n"); + if (s1apRequestType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_RequestType, s1apRequestType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_RequestType, s1apRequestType_p); + memcpy(&s1ap_LocationReportIEs->requestType, s1apRequestType_p, sizeof(S1ap_RequestType_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_locationreporties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uplinknastransport_ies( + S1ap_UplinkNASTransport_IEs_t *s1ap_UplinkNASTransport_IEs, + ANY_t *any_p) { + + S1ap_UplinkNASTransport_t s1ap_UplinkNASTransport; + S1ap_UplinkNASTransport_t *s1ap_UplinkNASTransport_p = &s1ap_UplinkNASTransport; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UplinkNASTransport_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UplinkNASTransport_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UplinkNASTransport, (void**)&s1ap_UplinkNASTransport_p); + + for (i = 0; i < s1ap_UplinkNASTransport_p->s1ap_UplinkNASTransport_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UplinkNASTransport_p->s1ap_UplinkNASTransport_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UplinkNASTransport_IEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UplinkNASTransport_IEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_NAS_PDU: + { + S1ap_NAS_PDU_t *s1apNASPDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_NAS_PDU, (void**)&s1apNASPDU_p); + if (tempDecoded < 0 || s1apNASPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE nas_pdu failed\n"); + if (s1apNASPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + memcpy(&s1ap_UplinkNASTransport_IEs->nas_pdu, s1apNASPDU_p, sizeof(S1ap_NAS_PDU_t)); + } break; + case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: + { + S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_EUTRAN_CGI, (void**)&s1apEUTRANCGI_p); + if (tempDecoded < 0 || s1apEUTRANCGI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eutran_cgi failed\n"); + if (s1apEUTRANCGI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + memcpy(&s1ap_UplinkNASTransport_IEs->eutran_cgi, s1apEUTRANCGI_p, sizeof(S1ap_EUTRAN_CGI_t)); + } break; + case S1ap_ProtocolIE_ID_id_TAI: + { + S1ap_TAI_t *s1apTAI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAI, (void**)&s1apTAI_p); + if (tempDecoded < 0 || s1apTAI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE tai failed\n"); + if (s1apTAI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TAI, s1apTAI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TAI, s1apTAI_p); + memcpy(&s1ap_UplinkNASTransport_IEs->tai, s1apTAI_p, sizeof(S1ap_TAI_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_GW_S1ap_TransportLayerAddress: + { + S1ap_TransportLayerAddress_t *s1apTransportLayerAddress_p = NULL; + s1ap_UplinkNASTransport_IEs->presenceMask |= S1AP_UPLINKNASTRANSPORT_IES_GW_S1AP_TRANSPORTLAYERADDRESS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TransportLayerAddress, (void**)&s1apTransportLayerAddress_p); + if (tempDecoded < 0 || s1apTransportLayerAddress_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE gW_S1ap_TransportLayerAddress failed\n"); + if (s1apTransportLayerAddress_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TransportLayerAddress, s1apTransportLayerAddress_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TransportLayerAddress, s1apTransportLayerAddress_p); + memcpy(&s1ap_UplinkNASTransport_IEs->gW_S1ap_TransportLayerAddress, s1apTransportLayerAddress_p, sizeof(S1ap_TransportLayerAddress_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinknastransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uecontextmodificationresponseies( + S1ap_UEContextModificationResponseIEs_t *s1ap_UEContextModificationResponseIEs, + ANY_t *any_p) { + + S1ap_UEContextModificationResponse_t s1ap_UEContextModificationResponse; + S1ap_UEContextModificationResponse_t *s1ap_UEContextModificationResponse_p = &s1ap_UEContextModificationResponse; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UEContextModificationResponseIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UEContextModificationResponseIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UEContextModificationResponse, (void**)&s1ap_UEContextModificationResponse_p); + + for (i = 0; i < s1ap_UEContextModificationResponse_p->s1ap_UEContextModificationResponse_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UEContextModificationResponse_p->s1ap_UEContextModificationResponse_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UEContextModificationResponseIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UEContextModificationResponseIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_UEContextModificationResponseIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_UEContextModificationResponseIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uecontextmodificationresponseies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uecontextmodificationrequesties( + S1ap_UEContextModificationRequestIEs_t *s1ap_UEContextModificationRequestIEs, + ANY_t *any_p) { + + S1ap_UEContextModificationRequest_t s1ap_UEContextModificationRequest; + S1ap_UEContextModificationRequest_t *s1ap_UEContextModificationRequest_p = &s1ap_UEContextModificationRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UEContextModificationRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UEContextModificationRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UEContextModificationRequest, (void**)&s1ap_UEContextModificationRequest_p); + + for (i = 0; i < s1ap_UEContextModificationRequest_p->s1ap_UEContextModificationRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UEContextModificationRequest_p->s1ap_UEContextModificationRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UEContextModificationRequestIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UEContextModificationRequestIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SecurityKey: + { + S1ap_SecurityKey_t *s1apSecurityKey_p = NULL; + s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_SECURITYKEY_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SecurityKey, (void**)&s1apSecurityKey_p); + if (tempDecoded < 0 || s1apSecurityKey_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE securityKey failed\n"); + if (s1apSecurityKey_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SecurityKey, s1apSecurityKey_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SecurityKey, s1apSecurityKey_p); + memcpy(&s1ap_UEContextModificationRequestIEs->securityKey, s1apSecurityKey_p, sizeof(S1ap_SecurityKey_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP: + { + S1ap_SubscriberProfileIDforRFP_t *s1apSubscriberProfileIDforRFP_p = NULL; + s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SubscriberProfileIDforRFP, (void**)&s1apSubscriberProfileIDforRFP_p); + if (tempDecoded < 0 || s1apSubscriberProfileIDforRFP_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE subscriberProfileIDforRFP failed\n"); + if (s1apSubscriberProfileIDforRFP_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SubscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SubscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p); + memcpy(&s1ap_UEContextModificationRequestIEs->subscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p, sizeof(S1ap_SubscriberProfileIDforRFP_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: + { + S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = NULL; + s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void**)&s1apUEAggregateMaximumBitrate_p); + if (tempDecoded < 0 || s1apUEAggregateMaximumBitrate_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uEaggregateMaximumBitrate failed\n"); + if (s1apUEAggregateMaximumBitrate_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + memcpy(&s1ap_UEContextModificationRequestIEs->uEaggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p, sizeof(S1ap_UEAggregateMaximumBitrate_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSFallbackIndicator: + { + S1ap_CSFallbackIndicator_t *s1apCSFallbackIndicator_p = NULL; + s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSFALLBACKINDICATOR_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSFallbackIndicator, (void**)&s1apCSFallbackIndicator_p); + if (tempDecoded < 0 || s1apCSFallbackIndicator_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csFallbackIndicator failed\n"); + if (s1apCSFallbackIndicator_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSFallbackIndicator, s1apCSFallbackIndicator_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSFallbackIndicator, s1apCSFallbackIndicator_p); + memcpy(&s1ap_UEContextModificationRequestIEs->csFallbackIndicator, s1apCSFallbackIndicator_p, sizeof(S1ap_CSFallbackIndicator_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_UESecurityCapabilities: + { + S1ap_UESecurityCapabilities_t *s1apUESecurityCapabilities_p = NULL; + s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_UESECURITYCAPABILITIES_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UESecurityCapabilities, (void**)&s1apUESecurityCapabilities_p); + if (tempDecoded < 0 || s1apUESecurityCapabilities_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE ueSecurityCapabilities failed\n"); + if (s1apUESecurityCapabilities_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UESecurityCapabilities, s1apUESecurityCapabilities_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UESecurityCapabilities, s1apUESecurityCapabilities_p); + memcpy(&s1ap_UEContextModificationRequestIEs->ueSecurityCapabilities, s1apUESecurityCapabilities_p, sizeof(S1ap_UESecurityCapabilities_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSGMembershipStatus: + { + S1ap_CSGMembershipStatus_t *s1apCSGMembershipStatus_p = NULL; + s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSGMembershipStatus, (void**)&s1apCSGMembershipStatus_p); + if (tempDecoded < 0 || s1apCSGMembershipStatus_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csgMembershipStatus failed\n"); + if (s1apCSGMembershipStatus_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSGMembershipStatus, s1apCSGMembershipStatus_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSGMembershipStatus, s1apCSGMembershipStatus_p); + memcpy(&s1ap_UEContextModificationRequestIEs->csgMembershipStatus, s1apCSGMembershipStatus_p, sizeof(S1ap_CSGMembershipStatus_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_RegisteredLAI: + { + S1ap_LAI_t *s1apLAI_p = NULL; + s1ap_UEContextModificationRequestIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONREQUESTIES_REGISTEREDLAI_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_LAI, (void**)&s1apLAI_p); + if (tempDecoded < 0 || s1apLAI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE registeredLAI failed\n"); + if (s1apLAI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_LAI, s1apLAI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_LAI, s1apLAI_p); + memcpy(&s1ap_UEContextModificationRequestIEs->registeredLAI, s1apLAI_p, sizeof(S1ap_LAI_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uecontextmodificationrequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_locationreportingcontrolies( + S1ap_LocationReportingControlIEs_t *s1ap_LocationReportingControlIEs, + ANY_t *any_p) { + + S1ap_LocationReportingControl_t s1ap_LocationReportingControl; + S1ap_LocationReportingControl_t *s1ap_LocationReportingControl_p = &s1ap_LocationReportingControl; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_LocationReportingControlIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_LocationReportingControlIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_LocationReportingControl, (void**)&s1ap_LocationReportingControl_p); + + for (i = 0; i < s1ap_LocationReportingControl_p->s1ap_LocationReportingControl_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_LocationReportingControl_p->s1ap_LocationReportingControl_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_LocationReportingControlIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_LocationReportingControlIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_RequestType: + { + S1ap_RequestType_t *s1apRequestType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_RequestType, (void**)&s1apRequestType_p); + if (tempDecoded < 0 || s1apRequestType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE requestType failed\n"); + if (s1apRequestType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_RequestType, s1apRequestType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_RequestType, s1apRequestType_p); + memcpy(&s1ap_LocationReportingControlIEs->requestType, s1apRequestType_p, sizeof(S1ap_RequestType_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_locationreportingcontrolies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uplinks1cdma2000tunnelingies( + S1ap_UplinkS1cdma2000tunnelingIEs_t *s1ap_UplinkS1cdma2000tunnelingIEs, + ANY_t *any_p) { + + S1ap_UplinkS1cdma2000tunneling_t s1ap_UplinkS1cdma2000tunneling; + S1ap_UplinkS1cdma2000tunneling_t *s1ap_UplinkS1cdma2000tunneling_p = &s1ap_UplinkS1cdma2000tunneling; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UplinkS1cdma2000tunnelingIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UplinkS1cdma2000tunnelingIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UplinkS1cdma2000tunneling, (void**)&s1ap_UplinkS1cdma2000tunneling_p); + + for (i = 0; i < s1ap_UplinkS1cdma2000tunneling_p->s1ap_UplinkS1cdma2000tunneling_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UplinkS1cdma2000tunneling_p->s1ap_UplinkS1cdma2000tunneling_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_cdma2000RATType: + { + S1ap_Cdma2000RATType_t *s1apCdma2000RATType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000RATType, (void**)&s1apCdma2000RATType_p); + if (tempDecoded < 0 || s1apCdma2000RATType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000RATType failed\n"); + if (s1apCdma2000RATType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000RATType, s1apCdma2000RATType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000RATType, s1apCdma2000RATType_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000RATType, s1apCdma2000RATType_p, sizeof(S1ap_Cdma2000RATType_t)); + } break; + case S1ap_ProtocolIE_ID_id_cdma2000SectorID: + { + S1ap_Cdma2000SectorID_t *s1apCdma2000SectorID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000SectorID, (void**)&s1apCdma2000SectorID_p); + if (tempDecoded < 0 || s1apCdma2000SectorID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000SectorID failed\n"); + if (s1apCdma2000SectorID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000SectorID, s1apCdma2000SectorID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000SectorID, s1apCdma2000SectorID_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000SectorID, s1apCdma2000SectorID_p, sizeof(S1ap_Cdma2000SectorID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_cdma2000HORequiredIndication: + { + S1ap_Cdma2000HORequiredIndication_t *s1apCdma2000HORequiredIndication_p = NULL; + s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000HOREQUIREDINDICATION_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000HORequiredIndication, (void**)&s1apCdma2000HORequiredIndication_p); + if (tempDecoded < 0 || s1apCdma2000HORequiredIndication_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000HORequiredIndication failed\n"); + if (s1apCdma2000HORequiredIndication_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000HORequiredIndication, s1apCdma2000HORequiredIndication_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000HORequiredIndication, s1apCdma2000HORequiredIndication_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000HORequiredIndication, s1apCdma2000HORequiredIndication_p, sizeof(S1ap_Cdma2000HORequiredIndication_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_cdma2000OneXSRVCCInfo: + { + S1ap_Cdma2000OneXSRVCCInfo_t *s1apCdma2000OneXSRVCCInfo_p = NULL; + s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXSRVCCINFO_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000OneXSRVCCInfo, (void**)&s1apCdma2000OneXSRVCCInfo_p); + if (tempDecoded < 0 || s1apCdma2000OneXSRVCCInfo_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000OneXSRVCCInfo failed\n"); + if (s1apCdma2000OneXSRVCCInfo_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000OneXSRVCCInfo, s1apCdma2000OneXSRVCCInfo_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000OneXSRVCCInfo, s1apCdma2000OneXSRVCCInfo_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000OneXSRVCCInfo, s1apCdma2000OneXSRVCCInfo_p, sizeof(S1ap_Cdma2000OneXSRVCCInfo_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_cdma2000OneXRAND: + { + S1ap_Cdma2000OneXRAND_t *s1apCdma2000OneXRAND_p = NULL; + s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXRAND_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000OneXRAND, (void**)&s1apCdma2000OneXRAND_p); + if (tempDecoded < 0 || s1apCdma2000OneXRAND_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000OneXRAND failed\n"); + if (s1apCdma2000OneXRAND_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000OneXRAND, s1apCdma2000OneXRAND_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000OneXRAND, s1apCdma2000OneXRAND_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000OneXRAND, s1apCdma2000OneXRAND_p, sizeof(S1ap_Cdma2000OneXRAND_t)); + } break; + case S1ap_ProtocolIE_ID_id_cdma2000PDU: + { + S1ap_Cdma2000PDU_t *s1apCdma2000PDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000PDU, (void**)&s1apCdma2000PDU_p); + if (tempDecoded < 0 || s1apCdma2000PDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000PDU failed\n"); + if (s1apCdma2000PDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000PDU, s1apCdma2000PDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000PDU, s1apCdma2000PDU_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000PDU, s1apCdma2000PDU_p, sizeof(S1ap_Cdma2000PDU_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_EUTRANRoundTripDelayEstimationInfo: + { + S1ap_EUTRANRoundTripDelayEstimationInfo_t *s1apEUTRANRoundTripDelayEstimationInfo_p = NULL; + s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_UPLINKS1CDMA2000TUNNELINGIES_EUTRANROUNDTRIPDELAYESTIMATIONINFO_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_EUTRANRoundTripDelayEstimationInfo, (void**)&s1apEUTRANRoundTripDelayEstimationInfo_p); + if (tempDecoded < 0 || s1apEUTRANRoundTripDelayEstimationInfo_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eutranRoundTripDelayEstimationInfo failed\n"); + if (s1apEUTRANRoundTripDelayEstimationInfo_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_EUTRANRoundTripDelayEstimationInfo, s1apEUTRANRoundTripDelayEstimationInfo_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_EUTRANRoundTripDelayEstimationInfo, s1apEUTRANRoundTripDelayEstimationInfo_p); + memcpy(&s1ap_UplinkS1cdma2000tunnelingIEs->eutranRoundTripDelayEstimationInfo, s1apEUTRANRoundTripDelayEstimationInfo_p, sizeof(S1ap_EUTRANRoundTripDelayEstimationInfo_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinks1cdma2000tunnelingies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handoverrequesties( + S1ap_HandoverRequestIEs_t *s1ap_HandoverRequestIEs, + ANY_t *any_p) { + + S1ap_HandoverRequest_t s1ap_HandoverRequest; + S1ap_HandoverRequest_t *s1ap_HandoverRequest_p = &s1ap_HandoverRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverRequest, (void**)&s1ap_HandoverRequest_p); + + for (i = 0; i < s1ap_HandoverRequest_p->s1ap_HandoverRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverRequest_p->s1ap_HandoverRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverRequestIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_HandoverType: + { + S1ap_HandoverType_t *s1apHandoverType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_HandoverType, (void**)&s1apHandoverType_p); + if (tempDecoded < 0 || s1apHandoverType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE handoverType failed\n"); + if (s1apHandoverType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_HandoverType, s1apHandoverType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_HandoverType, s1apHandoverType_p); + memcpy(&s1ap_HandoverRequestIEs->handoverType, s1apHandoverType_p, sizeof(S1ap_HandoverType_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_HandoverRequestIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: + { + S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void**)&s1apUEAggregateMaximumBitrate_p); + if (tempDecoded < 0 || s1apUEAggregateMaximumBitrate_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uEaggregateMaximumBitrate failed\n"); + if (s1apUEAggregateMaximumBitrate_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + memcpy(&s1ap_HandoverRequestIEs->uEaggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p, sizeof(S1ap_UEAggregateMaximumBitrate_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABToBeSetupListHOReq: + { + S1ap_E_RABToBeSetupListHOReq_t *s1apERABToBeSetupListHOReq_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupListHOReq, (void**)&s1apERABToBeSetupListHOReq_p); + if (tempDecoded < 0 || s1apERABToBeSetupListHOReq_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSetupListHOReq failed\n"); + if (s1apERABToBeSetupListHOReq_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListHOReq, s1apERABToBeSetupListHOReq_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSetupListHOReq, s1apERABToBeSetupListHOReq_p); + memcpy(&s1ap_HandoverRequestIEs->e_RABToBeSetupListHOReq, s1apERABToBeSetupListHOReq_p, sizeof(S1ap_E_RABToBeSetupListHOReq_t)); + } break; + case S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer: + { + S1ap_Source_ToTarget_TransparentContainer_t *s1apSourceToTargetTransparentContainer_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, (void**)&s1apSourceToTargetTransparentContainer_p); + if (tempDecoded < 0 || s1apSourceToTargetTransparentContainer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE source_ToTarget_TransparentContainer failed\n"); + if (s1apSourceToTargetTransparentContainer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Source_ToTarget_TransparentContainer, s1apSourceToTargetTransparentContainer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, s1apSourceToTargetTransparentContainer_p); + memcpy(&s1ap_HandoverRequestIEs->source_ToTarget_TransparentContainer, s1apSourceToTargetTransparentContainer_p, sizeof(S1ap_Source_ToTarget_TransparentContainer_t)); + } break; + case S1ap_ProtocolIE_ID_id_UESecurityCapabilities: + { + S1ap_UESecurityCapabilities_t *s1apUESecurityCapabilities_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UESecurityCapabilities, (void**)&s1apUESecurityCapabilities_p); + if (tempDecoded < 0 || s1apUESecurityCapabilities_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE ueSecurityCapabilities failed\n"); + if (s1apUESecurityCapabilities_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UESecurityCapabilities, s1apUESecurityCapabilities_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UESecurityCapabilities, s1apUESecurityCapabilities_p); + memcpy(&s1ap_HandoverRequestIEs->ueSecurityCapabilities, s1apUESecurityCapabilities_p, sizeof(S1ap_UESecurityCapabilities_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_HandoverRestrictionList: + { + S1ap_HandoverRestrictionList_t *s1apHandoverRestrictionList_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_HandoverRestrictionList, (void**)&s1apHandoverRestrictionList_p); + if (tempDecoded < 0 || s1apHandoverRestrictionList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE handoverRestrictionList failed\n"); + if (s1apHandoverRestrictionList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_HandoverRestrictionList, s1apHandoverRestrictionList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_HandoverRestrictionList, s1apHandoverRestrictionList_p); + memcpy(&s1ap_HandoverRequestIEs->handoverRestrictionList, s1apHandoverRestrictionList_p, sizeof(S1ap_HandoverRestrictionList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_TraceActivation: + { + S1ap_TraceActivation_t *s1apTraceActivation_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_TRACEACTIVATION_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TraceActivation, (void**)&s1apTraceActivation_p); + if (tempDecoded < 0 || s1apTraceActivation_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE traceActivation failed\n"); + if (s1apTraceActivation_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TraceActivation, s1apTraceActivation_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TraceActivation, s1apTraceActivation_p); + memcpy(&s1ap_HandoverRequestIEs->traceActivation, s1apTraceActivation_p, sizeof(S1ap_TraceActivation_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_RequestType: + { + S1ap_RequestType_t *s1apRequestType_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_REQUESTTYPE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_RequestType, (void**)&s1apRequestType_p); + if (tempDecoded < 0 || s1apRequestType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE requestType failed\n"); + if (s1apRequestType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_RequestType, s1apRequestType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_RequestType, s1apRequestType_p); + memcpy(&s1ap_HandoverRequestIEs->requestType, s1apRequestType_p, sizeof(S1ap_RequestType_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SRVCCOperationPossible: + { + S1ap_SRVCCOperationPossible_t *s1apSRVCCOperationPossible_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SRVCCOperationPossible, (void**)&s1apSRVCCOperationPossible_p); + if (tempDecoded < 0 || s1apSRVCCOperationPossible_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE srvccOperationPossible failed\n"); + if (s1apSRVCCOperationPossible_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SRVCCOperationPossible, s1apSRVCCOperationPossible_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SRVCCOperationPossible, s1apSRVCCOperationPossible_p); + memcpy(&s1ap_HandoverRequestIEs->srvccOperationPossible, s1apSRVCCOperationPossible_p, sizeof(S1ap_SRVCCOperationPossible_t)); + } break; + case S1ap_ProtocolIE_ID_id_SecurityContext: + { + S1ap_SecurityContext_t *s1apSecurityContext_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SecurityContext, (void**)&s1apSecurityContext_p); + if (tempDecoded < 0 || s1apSecurityContext_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE securityContext failed\n"); + if (s1apSecurityContext_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SecurityContext, s1apSecurityContext_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SecurityContext, s1apSecurityContext_p); + memcpy(&s1ap_HandoverRequestIEs->securityContext, s1apSecurityContext_p, sizeof(S1ap_SecurityContext_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSG_Id: + { + S1ap_CSG_Id_t *s1apCSGId_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_CSG_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSG_Id, (void**)&s1apCSGId_p); + if (tempDecoded < 0 || s1apCSGId_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csG_Id failed\n"); + if (s1apCSGId_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + memcpy(&s1ap_HandoverRequestIEs->csG_Id, s1apCSGId_p, sizeof(S1ap_CSG_Id_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSGMembershipStatus: + { + S1ap_CSGMembershipStatus_t *s1apCSGMembershipStatus_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSGMembershipStatus, (void**)&s1apCSGMembershipStatus_p); + if (tempDecoded < 0 || s1apCSGMembershipStatus_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csgMembershipStatus failed\n"); + if (s1apCSGMembershipStatus_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSGMembershipStatus, s1apCSGMembershipStatus_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSGMembershipStatus, s1apCSGMembershipStatus_p); + memcpy(&s1ap_HandoverRequestIEs->csgMembershipStatus, s1apCSGMembershipStatus_p, sizeof(S1ap_CSGMembershipStatus_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_GUMMEI_ID: + { + S1ap_GUMMEI_t *s1apGUMMEI_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_GUMMEI_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_GUMMEI, (void**)&s1apGUMMEI_p); + if (tempDecoded < 0 || s1apGUMMEI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE gummei_id failed\n"); + if (s1apGUMMEI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_GUMMEI, s1apGUMMEI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_GUMMEI, s1apGUMMEI_p); + memcpy(&s1ap_HandoverRequestIEs->gummei_id, s1apGUMMEI_p, sizeof(S1ap_GUMMEI_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_MME_UE_S1AP_ID_2_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id_2 failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverRequestIEs->mme_ue_s1ap_id_2, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_ManagementBasedMDTAllowed: + { + S1ap_ManagementBasedMDTAllowed_t *s1apManagementBasedMDTAllowed_p = NULL; + s1ap_HandoverRequestIEs->presenceMask |= S1AP_HANDOVERREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ManagementBasedMDTAllowed, (void**)&s1apManagementBasedMDTAllowed_p); + if (tempDecoded < 0 || s1apManagementBasedMDTAllowed_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE managementBasedMDTAllowed failed\n"); + if (s1apManagementBasedMDTAllowed_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ManagementBasedMDTAllowed, s1apManagementBasedMDTAllowed_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ManagementBasedMDTAllowed, s1apManagementBasedMDTAllowed_p); + memcpy(&s1ap_HandoverRequestIEs->managementBasedMDTAllowed, s1apManagementBasedMDTAllowed_p, sizeof(S1ap_ManagementBasedMDTAllowed_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handoverrequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handoverrequiredies( + S1ap_HandoverRequiredIEs_t *s1ap_HandoverRequiredIEs, + ANY_t *any_p) { + + S1ap_HandoverRequired_t s1ap_HandoverRequired; + S1ap_HandoverRequired_t *s1ap_HandoverRequired_p = &s1ap_HandoverRequired; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverRequiredIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverRequiredIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverRequired, (void**)&s1ap_HandoverRequired_p); + + for (i = 0; i < s1ap_HandoverRequired_p->s1ap_HandoverRequired_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverRequired_p->s1ap_HandoverRequired_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverRequiredIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_HandoverRequiredIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_HandoverType: + { + S1ap_HandoverType_t *s1apHandoverType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_HandoverType, (void**)&s1apHandoverType_p); + if (tempDecoded < 0 || s1apHandoverType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE handoverType failed\n"); + if (s1apHandoverType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_HandoverType, s1apHandoverType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_HandoverType, s1apHandoverType_p); + memcpy(&s1ap_HandoverRequiredIEs->handoverType, s1apHandoverType_p, sizeof(S1ap_HandoverType_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_HandoverRequiredIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + case S1ap_ProtocolIE_ID_id_TargetID: + { + S1ap_TargetID_t *s1apTargetID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TargetID, (void**)&s1apTargetID_p); + if (tempDecoded < 0 || s1apTargetID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE targetID failed\n"); + if (s1apTargetID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TargetID, s1apTargetID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TargetID, s1apTargetID_p); + memcpy(&s1ap_HandoverRequiredIEs->targetID, s1apTargetID_p, sizeof(S1ap_TargetID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_Direct_Forwarding_Path_Availability: + { + S1ap_Direct_Forwarding_Path_Availability_t *s1apDirectForwardingPathAvailability_p = NULL; + s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Direct_Forwarding_Path_Availability, (void**)&s1apDirectForwardingPathAvailability_p); + if (tempDecoded < 0 || s1apDirectForwardingPathAvailability_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE direct_Forwarding_Path_Availability failed\n"); + if (s1apDirectForwardingPathAvailability_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Direct_Forwarding_Path_Availability, s1apDirectForwardingPathAvailability_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Direct_Forwarding_Path_Availability, s1apDirectForwardingPathAvailability_p); + memcpy(&s1ap_HandoverRequiredIEs->direct_Forwarding_Path_Availability, s1apDirectForwardingPathAvailability_p, sizeof(S1ap_Direct_Forwarding_Path_Availability_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SRVCCHOIndication: + { + S1ap_SRVCCHOIndication_t *s1apSRVCCHOIndication_p = NULL; + s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_SRVCCHOINDICATION_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SRVCCHOIndication, (void**)&s1apSRVCCHOIndication_p); + if (tempDecoded < 0 || s1apSRVCCHOIndication_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE srvcchoIndication failed\n"); + if (s1apSRVCCHOIndication_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SRVCCHOIndication, s1apSRVCCHOIndication_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SRVCCHOIndication, s1apSRVCCHOIndication_p); + memcpy(&s1ap_HandoverRequiredIEs->srvcchoIndication, s1apSRVCCHOIndication_p, sizeof(S1ap_SRVCCHOIndication_t)); + } break; + case S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer: + { + S1ap_Source_ToTarget_TransparentContainer_t *s1apSourceToTargetTransparentContainer_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, (void**)&s1apSourceToTargetTransparentContainer_p); + if (tempDecoded < 0 || s1apSourceToTargetTransparentContainer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE source_ToTarget_TransparentContainer failed\n"); + if (s1apSourceToTargetTransparentContainer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Source_ToTarget_TransparentContainer, s1apSourceToTargetTransparentContainer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, s1apSourceToTargetTransparentContainer_p); + memcpy(&s1ap_HandoverRequiredIEs->source_ToTarget_TransparentContainer, s1apSourceToTargetTransparentContainer_p, sizeof(S1ap_Source_ToTarget_TransparentContainer_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer_Secondary: + { + S1ap_Source_ToTarget_TransparentContainer_t *s1apSourceToTargetTransparentContainer_p = NULL; + s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_SOURCE_TOTARGET_TRANSPARENTCONTAINER_SECONDARY_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, (void**)&s1apSourceToTargetTransparentContainer_p); + if (tempDecoded < 0 || s1apSourceToTargetTransparentContainer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE source_ToTarget_TransparentContainer_Secondary failed\n"); + if (s1apSourceToTargetTransparentContainer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Source_ToTarget_TransparentContainer, s1apSourceToTargetTransparentContainer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, s1apSourceToTargetTransparentContainer_p); + memcpy(&s1ap_HandoverRequiredIEs->source_ToTarget_TransparentContainer_Secondary, s1apSourceToTargetTransparentContainer_p, sizeof(S1ap_Source_ToTarget_TransparentContainer_t)); + } break; + /* Conditional field */ + case S1ap_ProtocolIE_ID_id_MSClassmark2: + { + S1ap_MSClassmark2_t *s1apMSClassmark2_p = NULL; + s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_MSCLASSMARK2_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MSClassmark2, (void**)&s1apMSClassmark2_p); + if (tempDecoded < 0 || s1apMSClassmark2_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE msClassmark2 failed\n"); + if (s1apMSClassmark2_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MSClassmark2, s1apMSClassmark2_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MSClassmark2, s1apMSClassmark2_p); + memcpy(&s1ap_HandoverRequiredIEs->msClassmark2, s1apMSClassmark2_p, sizeof(S1ap_MSClassmark2_t)); + } break; + /* Conditional field */ + case S1ap_ProtocolIE_ID_id_MSClassmark3: + { + S1ap_MSClassmark3_t *s1apMSClassmark3_p = NULL; + s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_MSCLASSMARK3_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MSClassmark3, (void**)&s1apMSClassmark3_p); + if (tempDecoded < 0 || s1apMSClassmark3_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE msClassmark3 failed\n"); + if (s1apMSClassmark3_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MSClassmark3, s1apMSClassmark3_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MSClassmark3, s1apMSClassmark3_p); + memcpy(&s1ap_HandoverRequiredIEs->msClassmark3, s1apMSClassmark3_p, sizeof(S1ap_MSClassmark3_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSG_Id: + { + S1ap_CSG_Id_t *s1apCSGId_p = NULL; + s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_CSG_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSG_Id, (void**)&s1apCSGId_p); + if (tempDecoded < 0 || s1apCSGId_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csG_Id failed\n"); + if (s1apCSGId_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + memcpy(&s1ap_HandoverRequiredIEs->csG_Id, s1apCSGId_p, sizeof(S1ap_CSG_Id_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CellAccessMode: + { + S1ap_CellAccessMode_t *s1apCellAccessMode_p = NULL; + s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_CELLACCESSMODE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CellAccessMode, (void**)&s1apCellAccessMode_p); + if (tempDecoded < 0 || s1apCellAccessMode_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cellAccessMode failed\n"); + if (s1apCellAccessMode_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CellAccessMode, s1apCellAccessMode_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CellAccessMode, s1apCellAccessMode_p); + memcpy(&s1ap_HandoverRequiredIEs->cellAccessMode, s1apCellAccessMode_p, sizeof(S1ap_CellAccessMode_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_PS_ServiceNotAvailable: + { + S1ap_PS_ServiceNotAvailable_t *s1apPSServiceNotAvailable_p = NULL; + s1ap_HandoverRequiredIEs->presenceMask |= S1AP_HANDOVERREQUIREDIES_PS_SERVICENOTAVAILABLE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_PS_ServiceNotAvailable, (void**)&s1apPSServiceNotAvailable_p); + if (tempDecoded < 0 || s1apPSServiceNotAvailable_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE pS_ServiceNotAvailable failed\n"); + if (s1apPSServiceNotAvailable_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_PS_ServiceNotAvailable, s1apPSServiceNotAvailable_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_PS_ServiceNotAvailable, s1apPSServiceNotAvailable_p); + memcpy(&s1ap_HandoverRequiredIEs->pS_ServiceNotAvailable, s1apPSServiceNotAvailable_p, sizeof(S1ap_PS_ServiceNotAvailable_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handoverrequiredies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabtobeswitcheddlitemies( + S1ap_E_RABToBeSwitchedDLItemIEs_t *s1ap_E_RABToBeSwitchedDLItemIEs, + ANY_t *any_p) { + + S1ap_E_RABToBeSwitchedDLList_t s1ap_E_RABToBeSwitchedDLList; + S1ap_E_RABToBeSwitchedDLList_t *s1ap_E_RABToBeSwitchedDLList_p = &s1ap_E_RABToBeSwitchedDLList; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABToBeSwitchedDLItemIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABToBeSwitchedDLItemIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABToBeSwitchedDLList, (void**)&s1ap_E_RABToBeSwitchedDLList_p); + + for (i = 0; i < s1ap_E_RABToBeSwitchedDLList_p->s1ap_E_RABToBeSwitchedDLList_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABToBeSwitchedDLList_p->s1ap_E_RABToBeSwitchedDLList_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedDLItem: + { + S1ap_E_RABToBeSwitchedDLItem_t *s1apERABToBeSwitchedDLItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSwitchedDLItem, (void**)&s1apERABToBeSwitchedDLItem_p); + if (tempDecoded < 0 || s1apERABToBeSwitchedDLItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSwitchedDLItem failed\n"); + if (s1apERABToBeSwitchedDLItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedDLItem, s1apERABToBeSwitchedDLItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSwitchedDLItem, s1apERABToBeSwitchedDLItem_p); + memcpy(&s1ap_E_RABToBeSwitchedDLItemIEs->e_RABToBeSwitchedDLItem, s1apERABToBeSwitchedDLItem_p, sizeof(S1ap_E_RABToBeSwitchedDLItem_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabtobeswitcheddlitemies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_mmeconfigurationupdateacknowledgeies( + S1ap_MMEConfigurationUpdateAcknowledgeIEs_t *s1ap_MMEConfigurationUpdateAcknowledgeIEs, + ANY_t *any_p) { + + S1ap_MMEConfigurationUpdateAcknowledge_t s1ap_MMEConfigurationUpdateAcknowledge; + S1ap_MMEConfigurationUpdateAcknowledge_t *s1ap_MMEConfigurationUpdateAcknowledge_p = &s1ap_MMEConfigurationUpdateAcknowledge; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_MMEConfigurationUpdateAcknowledgeIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_MMEConfigurationUpdateAcknowledgeIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_MMEConfigurationUpdateAcknowledge, (void**)&s1ap_MMEConfigurationUpdateAcknowledge_p); + + for (i = 0; i < s1ap_MMEConfigurationUpdateAcknowledge_p->s1ap_MMEConfigurationUpdateAcknowledge_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_MMEConfigurationUpdateAcknowledge_p->s1ap_MMEConfigurationUpdateAcknowledge_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_MMEConfigurationUpdateAcknowledgeIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_MMEConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_mmeconfigurationupdateacknowledgeies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_killresponseies( + S1ap_KillResponseIEs_t *s1ap_KillResponseIEs, + ANY_t *any_p) { + + S1ap_KillResponse_t s1ap_KillResponse; + S1ap_KillResponse_t *s1ap_KillResponse_p = &s1ap_KillResponse; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_KillResponseIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_KillResponseIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_KillResponse, (void**)&s1ap_KillResponse_p); + + for (i = 0; i < s1ap_KillResponse_p->s1ap_KillResponse_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_KillResponse_p->s1ap_KillResponse_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MessageIdentifier: + { + S1ap_MessageIdentifier_t *s1apMessageIdentifier_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MessageIdentifier, (void**)&s1apMessageIdentifier_p); + if (tempDecoded < 0 || s1apMessageIdentifier_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE messageIdentifier failed\n"); + if (s1apMessageIdentifier_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MessageIdentifier, s1apMessageIdentifier_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MessageIdentifier, s1apMessageIdentifier_p); + memcpy(&s1ap_KillResponseIEs->messageIdentifier, s1apMessageIdentifier_p, sizeof(S1ap_MessageIdentifier_t)); + } break; + case S1ap_ProtocolIE_ID_id_SerialNumber: + { + S1ap_SerialNumber_t *s1apSerialNumber_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SerialNumber, (void**)&s1apSerialNumber_p); + if (tempDecoded < 0 || s1apSerialNumber_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE serialNumber failed\n"); + if (s1apSerialNumber_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SerialNumber, s1apSerialNumber_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SerialNumber, s1apSerialNumber_p); + memcpy(&s1ap_KillResponseIEs->serialNumber, s1apSerialNumber_p, sizeof(S1ap_SerialNumber_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_BroadcastCancelledAreaList: + { + S1ap_BroadcastCancelledAreaList_t *s1apBroadcastCancelledAreaList_p = NULL; + s1ap_KillResponseIEs->presenceMask |= S1AP_KILLRESPONSEIES_BROADCASTCANCELLEDAREALIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_BroadcastCancelledAreaList, (void**)&s1apBroadcastCancelledAreaList_p); + if (tempDecoded < 0 || s1apBroadcastCancelledAreaList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE broadcastCancelledAreaList failed\n"); + if (s1apBroadcastCancelledAreaList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_BroadcastCancelledAreaList, s1apBroadcastCancelledAreaList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_BroadcastCancelledAreaList, s1apBroadcastCancelledAreaList_p); + memcpy(&s1ap_KillResponseIEs->broadcastCancelledAreaList, s1apBroadcastCancelledAreaList_p, sizeof(S1ap_BroadcastCancelledAreaList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_KillResponseIEs->presenceMask |= S1AP_KILLRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_KillResponseIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_killresponseies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_mmestatustransferies( + S1ap_MMEStatusTransferIEs_t *s1ap_MMEStatusTransferIEs, + ANY_t *any_p) { + + S1ap_MMEStatusTransfer_t s1ap_MMEStatusTransfer; + S1ap_MMEStatusTransfer_t *s1ap_MMEStatusTransfer_p = &s1ap_MMEStatusTransfer; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_MMEStatusTransferIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_MMEStatusTransferIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_MMEStatusTransfer, (void**)&s1ap_MMEStatusTransfer_p); + + for (i = 0; i < s1ap_MMEStatusTransfer_p->s1ap_MMEStatusTransfer_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_MMEStatusTransfer_p->s1ap_MMEStatusTransfer_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_MMEStatusTransferIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_MMEStatusTransferIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_StatusTransfer_TransparentContainer: + { + S1ap_ENB_StatusTransfer_TransparentContainer_t *s1apENBStatusTransferTransparentContainer_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, (void**)&s1apENBStatusTransferTransparentContainer_p); + if (tempDecoded < 0 || s1apENBStatusTransferTransparentContainer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_StatusTransfer_TransparentContainer failed\n"); + if (s1apENBStatusTransferTransparentContainer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, s1apENBStatusTransferTransparentContainer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, s1apENBStatusTransferTransparentContainer_p); + memcpy(&s1ap_MMEStatusTransferIEs->eNB_StatusTransfer_TransparentContainer, s1apENBStatusTransferTransparentContainer_p, sizeof(S1ap_ENB_StatusTransfer_TransparentContainer_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_mmestatustransferies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_mmeconfigurationupdateies( + S1ap_MMEConfigurationUpdateIEs_t *s1ap_MMEConfigurationUpdateIEs, + ANY_t *any_p) { + + S1ap_MMEConfigurationUpdate_t s1ap_MMEConfigurationUpdate; + S1ap_MMEConfigurationUpdate_t *s1ap_MMEConfigurationUpdate_p = &s1ap_MMEConfigurationUpdate; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_MMEConfigurationUpdateIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_MMEConfigurationUpdateIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_MMEConfigurationUpdate, (void**)&s1ap_MMEConfigurationUpdate_p); + + for (i = 0; i < s1ap_MMEConfigurationUpdate_p->s1ap_MMEConfigurationUpdate_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_MMEConfigurationUpdate_p->s1ap_MMEConfigurationUpdate_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_MMEname: + { + S1ap_MMEname_t *s1apMMEname_p = NULL; + s1ap_MMEConfigurationUpdateIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEIES_MMENAME_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MMEname, (void**)&s1apMMEname_p); + if (tempDecoded < 0 || s1apMMEname_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mmEname failed\n"); + if (s1apMMEname_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MMEname, s1apMMEname_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MMEname, s1apMMEname_p); + memcpy(&s1ap_MMEConfigurationUpdateIEs->mmEname, s1apMMEname_p, sizeof(S1ap_MMEname_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_ServedGUMMEIs: + { + S1ap_ServedGUMMEIs_t *s1apServedGUMMEIs_p = NULL; + s1ap_MMEConfigurationUpdateIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEIES_SERVEDGUMMEIS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ServedGUMMEIs, (void**)&s1apServedGUMMEIs_p); + if (tempDecoded < 0 || s1apServedGUMMEIs_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE servedGUMMEIs failed\n"); + if (s1apServedGUMMEIs_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ServedGUMMEIs, s1apServedGUMMEIs_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ServedGUMMEIs, s1apServedGUMMEIs_p); + memcpy(&s1ap_MMEConfigurationUpdateIEs->servedGUMMEIs, s1apServedGUMMEIs_p, sizeof(S1ap_ServedGUMMEIs_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_RelativeMMECapacity: + { + S1ap_RelativeMMECapacity_t *s1apRelativeMMECapacity_p = NULL; + s1ap_MMEConfigurationUpdateIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEIES_RELATIVEMMECAPACITY_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_RelativeMMECapacity, (void**)&s1apRelativeMMECapacity_p); + if (tempDecoded < 0 || s1apRelativeMMECapacity_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE relativeMMECapacity failed\n"); + if (s1apRelativeMMECapacity_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_RelativeMMECapacity, s1apRelativeMMECapacity_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_RelativeMMECapacity, s1apRelativeMMECapacity_p); + memcpy(&s1ap_MMEConfigurationUpdateIEs->relativeMMECapacity, s1apRelativeMMECapacity_p, sizeof(S1ap_RelativeMMECapacity_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_mmeconfigurationupdateies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabmodifyrequesties( + S1ap_E_RABModifyRequestIEs_t *s1ap_E_RABModifyRequestIEs, + ANY_t *any_p) { + + S1ap_E_RABModifyRequest_t s1ap_E_RABModifyRequest; + S1ap_E_RABModifyRequest_t *s1ap_E_RABModifyRequest_p = &s1ap_E_RABModifyRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABModifyRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABModifyRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABModifyRequest, (void**)&s1ap_E_RABModifyRequest_p); + + for (i = 0; i < s1ap_E_RABModifyRequest_p->s1ap_E_RABModifyRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABModifyRequest_p->s1ap_E_RABModifyRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_E_RABModifyRequestIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_E_RABModifyRequestIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: + { + S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = NULL; + s1ap_E_RABModifyRequestIEs->presenceMask |= S1AP_E_RABMODIFYREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void**)&s1apUEAggregateMaximumBitrate_p); + if (tempDecoded < 0 || s1apUEAggregateMaximumBitrate_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uEaggregateMaximumBitrate failed\n"); + if (s1apUEAggregateMaximumBitrate_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + memcpy(&s1ap_E_RABModifyRequestIEs->uEaggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p, sizeof(S1ap_UEAggregateMaximumBitrate_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABToBeModifiedListBearerModReq: + { + S1ap_E_RABToBeModifiedListBearerModReq_t *s1apERABToBeModifiedListBearerModReq_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, (void**)&s1apERABToBeModifiedListBearerModReq_p); + if (tempDecoded < 0 || s1apERABToBeModifiedListBearerModReq_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeModifiedListBearerModReq failed\n"); + if (s1apERABToBeModifiedListBearerModReq_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, s1apERABToBeModifiedListBearerModReq_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, s1apERABToBeModifiedListBearerModReq_p); + if (s1ap_decode_s1ap_e_rabtobemodifiedlistbearermodreq(&s1ap_E_RABModifyRequestIEs->e_RABToBeModifiedListBearerModReq, s1apERABToBeModifiedListBearerModReq_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABToBeModifiedListBearerModReq failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, s1apERABToBeModifiedListBearerModReq_p); + } + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabmodifyrequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabtobeswitchedulitemies( + S1ap_E_RABToBeSwitchedULItemIEs_t *s1ap_E_RABToBeSwitchedULItemIEs, + ANY_t *any_p) { + + S1ap_E_RABToBeSwitchedULList_t s1ap_E_RABToBeSwitchedULList; + S1ap_E_RABToBeSwitchedULList_t *s1ap_E_RABToBeSwitchedULList_p = &s1ap_E_RABToBeSwitchedULList; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABToBeSwitchedULItemIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABToBeSwitchedULItemIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABToBeSwitchedULList, (void**)&s1ap_E_RABToBeSwitchedULList_p); + + for (i = 0; i < s1ap_E_RABToBeSwitchedULList_p->s1ap_E_RABToBeSwitchedULList_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABToBeSwitchedULList_p->s1ap_E_RABToBeSwitchedULList_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedULItem: + { + S1ap_E_RABToBeSwitchedULItem_t *s1apERABToBeSwitchedULItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSwitchedULItem, (void**)&s1apERABToBeSwitchedULItem_p); + if (tempDecoded < 0 || s1apERABToBeSwitchedULItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSwitchedULItem failed\n"); + if (s1apERABToBeSwitchedULItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedULItem, s1apERABToBeSwitchedULItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSwitchedULItem, s1apERABToBeSwitchedULItem_p); + memcpy(&s1ap_E_RABToBeSwitchedULItemIEs->e_RABToBeSwitchedULItem, s1apERABToBeSwitchedULItem_p, sizeof(S1ap_E_RABToBeSwitchedULItem_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabtobeswitchedulitemies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_enbconfigurationupdatefailureies( + S1ap_ENBConfigurationUpdateFailureIEs_t *s1ap_ENBConfigurationUpdateFailureIEs, + ANY_t *any_p) { + + S1ap_ENBConfigurationUpdateFailure_t s1ap_ENBConfigurationUpdateFailure; + S1ap_ENBConfigurationUpdateFailure_t *s1ap_ENBConfigurationUpdateFailure_p = &s1ap_ENBConfigurationUpdateFailure; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ENBConfigurationUpdateFailureIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ENBConfigurationUpdateFailureIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_ENBConfigurationUpdateFailure, (void**)&s1ap_ENBConfigurationUpdateFailure_p); + + for (i = 0; i < s1ap_ENBConfigurationUpdateFailure_p->s1ap_ENBConfigurationUpdateFailure_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_ENBConfigurationUpdateFailure_p->s1ap_ENBConfigurationUpdateFailure_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_ENBConfigurationUpdateFailureIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_TimeToWait: + { + S1ap_TimeToWait_t *s1apTimeToWait_p = NULL; + s1ap_ENBConfigurationUpdateFailureIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TimeToWait, (void**)&s1apTimeToWait_p); + if (tempDecoded < 0 || s1apTimeToWait_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE timeToWait failed\n"); + if (s1apTimeToWait_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TimeToWait, s1apTimeToWait_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TimeToWait, s1apTimeToWait_p); + memcpy(&s1ap_ENBConfigurationUpdateFailureIEs->timeToWait, s1apTimeToWait_p, sizeof(S1ap_TimeToWait_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_ENBConfigurationUpdateFailureIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_ENBConfigurationUpdateFailureIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_enbconfigurationupdatefailureies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_reseties( + S1ap_ResetIEs_t *s1ap_ResetIEs, + ANY_t *any_p) { + + S1ap_Reset_t s1ap_Reset; + S1ap_Reset_t *s1ap_Reset_p = &s1ap_Reset; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ResetIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ResetIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_Reset, (void**)&s1ap_Reset_p); + + for (i = 0; i < s1ap_Reset_p->s1ap_Reset_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_Reset_p->s1ap_Reset_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_ResetIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + case S1ap_ProtocolIE_ID_id_ResetType: + { + S1ap_ResetType_t *s1apResetType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ResetType, (void**)&s1apResetType_p); + if (tempDecoded < 0 || s1apResetType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE resetType failed\n"); + if (s1apResetType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ResetType, s1apResetType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ResetType, s1apResetType_p); + memcpy(&s1ap_ResetIEs->resetType, s1apResetType_p, sizeof(S1ap_ResetType_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_reseties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_s1setupresponseies( + S1ap_S1SetupResponseIEs_t *s1ap_S1SetupResponseIEs, + ANY_t *any_p) { + + S1ap_S1SetupResponse_t s1ap_S1SetupResponse; + S1ap_S1SetupResponse_t *s1ap_S1SetupResponse_p = &s1ap_S1SetupResponse; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_S1SetupResponseIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_S1SetupResponseIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_S1SetupResponse, (void**)&s1ap_S1SetupResponse_p); + + for (i = 0; i < s1ap_S1SetupResponse_p->s1ap_S1SetupResponse_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_S1SetupResponse_p->s1ap_S1SetupResponse_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_MMEname: + { + S1ap_MMEname_t *s1apMMEname_p = NULL; + s1ap_S1SetupResponseIEs->presenceMask |= S1AP_S1SETUPRESPONSEIES_MMENAME_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MMEname, (void**)&s1apMMEname_p); + if (tempDecoded < 0 || s1apMMEname_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mmEname failed\n"); + if (s1apMMEname_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MMEname, s1apMMEname_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MMEname, s1apMMEname_p); + memcpy(&s1ap_S1SetupResponseIEs->mmEname, s1apMMEname_p, sizeof(S1ap_MMEname_t)); + } break; + case S1ap_ProtocolIE_ID_id_ServedGUMMEIs: + { + S1ap_ServedGUMMEIs_t *s1apServedGUMMEIs_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ServedGUMMEIs, (void**)&s1apServedGUMMEIs_p); + if (tempDecoded < 0 || s1apServedGUMMEIs_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE servedGUMMEIs failed\n"); + if (s1apServedGUMMEIs_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ServedGUMMEIs, s1apServedGUMMEIs_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ServedGUMMEIs, s1apServedGUMMEIs_p); + memcpy(&s1ap_S1SetupResponseIEs->servedGUMMEIs, s1apServedGUMMEIs_p, sizeof(S1ap_ServedGUMMEIs_t)); + } break; + case S1ap_ProtocolIE_ID_id_RelativeMMECapacity: + { + S1ap_RelativeMMECapacity_t *s1apRelativeMMECapacity_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_RelativeMMECapacity, (void**)&s1apRelativeMMECapacity_p); + if (tempDecoded < 0 || s1apRelativeMMECapacity_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE relativeMMECapacity failed\n"); + if (s1apRelativeMMECapacity_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_RelativeMMECapacity, s1apRelativeMMECapacity_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_RelativeMMECapacity, s1apRelativeMMECapacity_p); + memcpy(&s1ap_S1SetupResponseIEs->relativeMMECapacity, s1apRelativeMMECapacity_p, sizeof(S1ap_RelativeMMECapacity_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_MMERelaySupportIndicator: + { + S1ap_MMERelaySupportIndicator_t *s1apMMERelaySupportIndicator_p = NULL; + s1ap_S1SetupResponseIEs->presenceMask |= S1AP_S1SETUPRESPONSEIES_MMERELAYSUPPORTINDICATOR_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MMERelaySupportIndicator, (void**)&s1apMMERelaySupportIndicator_p); + if (tempDecoded < 0 || s1apMMERelaySupportIndicator_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mmeRelaySupportIndicator failed\n"); + if (s1apMMERelaySupportIndicator_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MMERelaySupportIndicator, s1apMMERelaySupportIndicator_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MMERelaySupportIndicator, s1apMMERelaySupportIndicator_p); + memcpy(&s1ap_S1SetupResponseIEs->mmeRelaySupportIndicator, s1apMMERelaySupportIndicator_p, sizeof(S1ap_MMERelaySupportIndicator_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_S1SetupResponseIEs->presenceMask |= S1AP_S1SETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_S1SetupResponseIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_s1setupresponseies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_pagingies( + S1ap_PagingIEs_t *s1ap_PagingIEs, + ANY_t *any_p) { + + S1ap_Paging_t s1ap_Paging; + S1ap_Paging_t *s1ap_Paging_p = &s1ap_Paging; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_PagingIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_PagingIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_Paging, (void**)&s1ap_Paging_p); + + for (i = 0; i < s1ap_Paging_p->s1ap_Paging_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_Paging_p->s1ap_Paging_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_UEIdentityIndexValue: + { + S1ap_UEIdentityIndexValue_t *s1apUEIdentityIndexValue_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEIdentityIndexValue, (void**)&s1apUEIdentityIndexValue_p); + if (tempDecoded < 0 || s1apUEIdentityIndexValue_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE ueIdentityIndexValue failed\n"); + if (s1apUEIdentityIndexValue_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEIdentityIndexValue, s1apUEIdentityIndexValue_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEIdentityIndexValue, s1apUEIdentityIndexValue_p); + memcpy(&s1ap_PagingIEs->ueIdentityIndexValue, s1apUEIdentityIndexValue_p, sizeof(S1ap_UEIdentityIndexValue_t)); + } break; + case S1ap_ProtocolIE_ID_id_UEPagingID: + { + S1ap_UEPagingID_t *s1apUEPagingID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEPagingID, (void**)&s1apUEPagingID_p); + if (tempDecoded < 0 || s1apUEPagingID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uePagingID failed\n"); + if (s1apUEPagingID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEPagingID, s1apUEPagingID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEPagingID, s1apUEPagingID_p); + memcpy(&s1ap_PagingIEs->uePagingID, s1apUEPagingID_p, sizeof(S1ap_UEPagingID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_pagingDRX: + { + S1ap_PagingDRX_t *s1apPagingDRX_p = NULL; + s1ap_PagingIEs->presenceMask |= S1AP_PAGINGIES_PAGINGDRX_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_PagingDRX, (void**)&s1apPagingDRX_p); + if (tempDecoded < 0 || s1apPagingDRX_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE pagingDRX failed\n"); + if (s1apPagingDRX_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_PagingDRX, s1apPagingDRX_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_PagingDRX, s1apPagingDRX_p); + memcpy(&s1ap_PagingIEs->pagingDRX, s1apPagingDRX_p, sizeof(S1ap_PagingDRX_t)); + } break; + case S1ap_ProtocolIE_ID_id_CNDomain: + { + S1ap_CNDomain_t *s1apCNDomain_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CNDomain, (void**)&s1apCNDomain_p); + if (tempDecoded < 0 || s1apCNDomain_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cnDomain failed\n"); + if (s1apCNDomain_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CNDomain, s1apCNDomain_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CNDomain, s1apCNDomain_p); + memcpy(&s1ap_PagingIEs->cnDomain, s1apCNDomain_p, sizeof(S1ap_CNDomain_t)); + } break; + case S1ap_ProtocolIE_ID_id_TAIList: + { + S1ap_TAIList_t *s1apTAIList_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAIList, (void**)&s1apTAIList_p); + if (tempDecoded < 0 || s1apTAIList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE taiList failed\n"); + if (s1apTAIList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TAIList, s1apTAIList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TAIList, s1apTAIList_p); + if (s1ap_decode_s1ap_tailist(&s1ap_PagingIEs->taiList, s1apTAIList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apTAIList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_TAIList, s1apTAIList_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSG_IdList: + { + S1ap_CSG_IdList_t *s1apCSGIdList_p = NULL; + s1ap_PagingIEs->presenceMask |= S1AP_PAGINGIES_CSG_IDLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSG_IdList, (void**)&s1apCSGIdList_p); + if (tempDecoded < 0 || s1apCSGIdList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csG_IdList failed\n"); + if (s1apCSGIdList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSG_IdList, s1apCSGIdList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSG_IdList, s1apCSGIdList_p); + memcpy(&s1ap_PagingIEs->csG_IdList, s1apCSGIdList_p, sizeof(S1ap_CSG_IdList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_PagingPriority: + { + S1ap_PagingPriority_t *s1apPagingPriority_p = NULL; + s1ap_PagingIEs->presenceMask |= S1AP_PAGINGIES_PAGINGPRIORITY_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_PagingPriority, (void**)&s1apPagingPriority_p); + if (tempDecoded < 0 || s1apPagingPriority_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE pagingPriority failed\n"); + if (s1apPagingPriority_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_PagingPriority, s1apPagingPriority_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_PagingPriority, s1apPagingPriority_p); + memcpy(&s1ap_PagingIEs->pagingPriority, s1apPagingPriority_p, sizeof(S1ap_PagingPriority_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_pagingies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_enbconfigurationupdateacknowledgeies( + S1ap_ENBConfigurationUpdateAcknowledgeIEs_t *s1ap_ENBConfigurationUpdateAcknowledgeIEs, + ANY_t *any_p) { + + S1ap_ENBConfigurationUpdateAcknowledge_t s1ap_ENBConfigurationUpdateAcknowledge; + S1ap_ENBConfigurationUpdateAcknowledge_t *s1ap_ENBConfigurationUpdateAcknowledge_p = &s1ap_ENBConfigurationUpdateAcknowledge; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ENBConfigurationUpdateAcknowledgeIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ENBConfigurationUpdateAcknowledgeIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_ENBConfigurationUpdateAcknowledge, (void**)&s1ap_ENBConfigurationUpdateAcknowledge_p); + + for (i = 0; i < s1ap_ENBConfigurationUpdateAcknowledge_p->s1ap_ENBConfigurationUpdateAcknowledge_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_ENBConfigurationUpdateAcknowledge_p->s1ap_ENBConfigurationUpdateAcknowledge_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_ENBConfigurationUpdateAcknowledgeIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_ENBConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_enbconfigurationupdateacknowledgeies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabreleasecommandies( + S1ap_E_RABReleaseCommandIEs_t *s1ap_E_RABReleaseCommandIEs, + ANY_t *any_p) { + + S1ap_E_RABReleaseCommand_t s1ap_E_RABReleaseCommand; + S1ap_E_RABReleaseCommand_t *s1ap_E_RABReleaseCommand_p = &s1ap_E_RABReleaseCommand; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABReleaseCommandIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABReleaseCommandIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABReleaseCommand, (void**)&s1ap_E_RABReleaseCommand_p); + + for (i = 0; i < s1ap_E_RABReleaseCommand_p->s1ap_E_RABReleaseCommand_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABReleaseCommand_p->s1ap_E_RABReleaseCommand_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_E_RABReleaseCommandIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_E_RABReleaseCommandIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: + { + S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = NULL; + s1ap_E_RABReleaseCommandIEs->presenceMask |= S1AP_E_RABRELEASECOMMANDIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void**)&s1apUEAggregateMaximumBitrate_p); + if (tempDecoded < 0 || s1apUEAggregateMaximumBitrate_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uEaggregateMaximumBitrate failed\n"); + if (s1apUEAggregateMaximumBitrate_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + memcpy(&s1ap_E_RABReleaseCommandIEs->uEaggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p, sizeof(S1ap_UEAggregateMaximumBitrate_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABToBeReleasedList: + { + S1ap_E_RABList_t *s1apERABList_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); + if (tempDecoded < 0 || s1apERABList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeReleasedList failed\n"); + if (s1apERABList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABList, s1apERABList_p); + if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABReleaseCommandIEs->e_RABToBeReleasedList, s1apERABList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_NAS_PDU: + { + S1ap_NAS_PDU_t *s1apNASPDU_p = NULL; + s1ap_E_RABReleaseCommandIEs->presenceMask |= S1AP_E_RABRELEASECOMMANDIES_NAS_PDU_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_NAS_PDU, (void**)&s1apNASPDU_p); + if (tempDecoded < 0 || s1apNASPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE nas_pdu failed\n"); + if (s1apNASPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + memcpy(&s1ap_E_RABReleaseCommandIEs->nas_pdu, s1apNASPDU_p, sizeof(S1ap_NAS_PDU_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabreleasecommandies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_pathswitchrequestfailureies( + S1ap_PathSwitchRequestFailureIEs_t *s1ap_PathSwitchRequestFailureIEs, + ANY_t *any_p) { + + S1ap_PathSwitchRequestFailure_t s1ap_PathSwitchRequestFailure; + S1ap_PathSwitchRequestFailure_t *s1ap_PathSwitchRequestFailure_p = &s1ap_PathSwitchRequestFailure; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_PathSwitchRequestFailureIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_PathSwitchRequestFailureIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_PathSwitchRequestFailure, (void**)&s1ap_PathSwitchRequestFailure_p); + + for (i = 0; i < s1ap_PathSwitchRequestFailure_p->s1ap_PathSwitchRequestFailure_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_PathSwitchRequestFailure_p->s1ap_PathSwitchRequestFailure_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_PathSwitchRequestFailureIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_PathSwitchRequestFailureIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_PathSwitchRequestFailureIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_PathSwitchRequestFailureIEs->presenceMask |= S1AP_PATHSWITCHREQUESTFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_PathSwitchRequestFailureIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_pathswitchrequestfailureies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabmodifyresponseies( + S1ap_E_RABModifyResponseIEs_t *s1ap_E_RABModifyResponseIEs, + ANY_t *any_p) { + + S1ap_E_RABModifyResponse_t s1ap_E_RABModifyResponse; + S1ap_E_RABModifyResponse_t *s1ap_E_RABModifyResponse_p = &s1ap_E_RABModifyResponse; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABModifyResponseIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABModifyResponseIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABModifyResponse, (void**)&s1ap_E_RABModifyResponse_p); + + for (i = 0; i < s1ap_E_RABModifyResponse_p->s1ap_E_RABModifyResponse_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABModifyResponse_p->s1ap_E_RABModifyResponse_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_E_RABModifyResponseIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_E_RABModifyResponseIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABModifyListBearerModRes: + { + S1ap_E_RABModifyListBearerModRes_t *s1apERABModifyListBearerModRes_p = NULL; + s1ap_E_RABModifyResponseIEs->presenceMask |= S1AP_E_RABMODIFYRESPONSEIES_E_RABMODIFYLISTBEARERMODRES_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABModifyListBearerModRes, (void**)&s1apERABModifyListBearerModRes_p); + if (tempDecoded < 0 || s1apERABModifyListBearerModRes_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABModifyListBearerModRes failed\n"); + if (s1apERABModifyListBearerModRes_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABModifyListBearerModRes, s1apERABModifyListBearerModRes_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABModifyListBearerModRes, s1apERABModifyListBearerModRes_p); + if (s1ap_decode_s1ap_e_rabmodifylistbearermodres(&s1ap_E_RABModifyResponseIEs->e_RABModifyListBearerModRes, s1apERABModifyListBearerModRes_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABModifyListBearerModRes failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABModifyListBearerModRes, s1apERABModifyListBearerModRes_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABFailedToModifyList: + { + S1ap_E_RABList_t *s1apERABList_p = NULL; + s1ap_E_RABModifyResponseIEs->presenceMask |= S1AP_E_RABMODIFYRESPONSEIES_E_RABFAILEDTOMODIFYLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); + if (tempDecoded < 0 || s1apERABList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABFailedToModifyList failed\n"); + if (s1apERABList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABList, s1apERABList_p); + if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABModifyResponseIEs->e_RABFailedToModifyList, s1apERABList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_E_RABModifyResponseIEs->presenceMask |= S1AP_E_RABMODIFYRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_E_RABModifyResponseIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabmodifyresponseies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handovernotifyies( + S1ap_HandoverNotifyIEs_t *s1ap_HandoverNotifyIEs, + ANY_t *any_p) { + + S1ap_HandoverNotify_t s1ap_HandoverNotify; + S1ap_HandoverNotify_t *s1ap_HandoverNotify_p = &s1ap_HandoverNotify; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverNotifyIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverNotifyIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverNotify, (void**)&s1ap_HandoverNotify_p); + + for (i = 0; i < s1ap_HandoverNotify_p->s1ap_HandoverNotify_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverNotify_p->s1ap_HandoverNotify_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverNotifyIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_HandoverNotifyIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: + { + S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_EUTRAN_CGI, (void**)&s1apEUTRANCGI_p); + if (tempDecoded < 0 || s1apEUTRANCGI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eutran_cgi failed\n"); + if (s1apEUTRANCGI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + memcpy(&s1ap_HandoverNotifyIEs->eutran_cgi, s1apEUTRANCGI_p, sizeof(S1ap_EUTRAN_CGI_t)); + } break; + case S1ap_ProtocolIE_ID_id_TAI: + { + S1ap_TAI_t *s1apTAI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAI, (void**)&s1apTAI_p); + if (tempDecoded < 0 || s1apTAI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE tai failed\n"); + if (s1apTAI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TAI, s1apTAI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TAI, s1apTAI_p); + memcpy(&s1ap_HandoverNotifyIEs->tai, s1apTAI_p, sizeof(S1ap_TAI_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handovernotifyies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handovercancelacknowledgeies( + S1ap_HandoverCancelAcknowledgeIEs_t *s1ap_HandoverCancelAcknowledgeIEs, + ANY_t *any_p) { + + S1ap_HandoverCancelAcknowledge_t s1ap_HandoverCancelAcknowledge; + S1ap_HandoverCancelAcknowledge_t *s1ap_HandoverCancelAcknowledge_p = &s1ap_HandoverCancelAcknowledge; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverCancelAcknowledgeIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverCancelAcknowledgeIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverCancelAcknowledge, (void**)&s1ap_HandoverCancelAcknowledge_p); + + for (i = 0; i < s1ap_HandoverCancelAcknowledge_p->s1ap_HandoverCancelAcknowledge_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverCancelAcknowledge_p->s1ap_HandoverCancelAcknowledge_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverCancelAcknowledgeIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_HandoverCancelAcknowledgeIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_HandoverCancelAcknowledgeIEs->presenceMask |= S1AP_HANDOVERCANCELACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_HandoverCancelAcknowledgeIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handovercancelacknowledgeies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_initialcontextsetupfailureies( + S1ap_InitialContextSetupFailureIEs_t *s1ap_InitialContextSetupFailureIEs, + ANY_t *any_p) { + + S1ap_InitialContextSetupFailure_t s1ap_InitialContextSetupFailure; + S1ap_InitialContextSetupFailure_t *s1ap_InitialContextSetupFailure_p = &s1ap_InitialContextSetupFailure; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_InitialContextSetupFailureIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_InitialContextSetupFailureIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_InitialContextSetupFailure, (void**)&s1ap_InitialContextSetupFailure_p); + + for (i = 0; i < s1ap_InitialContextSetupFailure_p->s1ap_InitialContextSetupFailure_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_InitialContextSetupFailure_p->s1ap_InitialContextSetupFailure_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_InitialContextSetupFailureIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_InitialContextSetupFailureIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_InitialContextSetupFailureIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_InitialContextSetupFailureIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_InitialContextSetupFailureIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_initialcontextsetupfailureies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handovercommandies( + S1ap_HandoverCommandIEs_t *s1ap_HandoverCommandIEs, + ANY_t *any_p) { + + S1ap_HandoverCommand_t s1ap_HandoverCommand; + S1ap_HandoverCommand_t *s1ap_HandoverCommand_p = &s1ap_HandoverCommand; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverCommandIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverCommandIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverCommand, (void**)&s1ap_HandoverCommand_p); + + for (i = 0; i < s1ap_HandoverCommand_p->s1ap_HandoverCommand_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverCommand_p->s1ap_HandoverCommand_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverCommandIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_HandoverCommandIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_HandoverType: + { + S1ap_HandoverType_t *s1apHandoverType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_HandoverType, (void**)&s1apHandoverType_p); + if (tempDecoded < 0 || s1apHandoverType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE handoverType failed\n"); + if (s1apHandoverType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_HandoverType, s1apHandoverType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_HandoverType, s1apHandoverType_p); + memcpy(&s1ap_HandoverCommandIEs->handoverType, s1apHandoverType_p, sizeof(S1ap_HandoverType_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABSubjecttoDataForwardingList: + { + S1ap_E_RABSubjecttoDataForwardingList_t *s1apERABSubjecttoDataForwardingList_p = NULL; + s1ap_HandoverCommandIEs->presenceMask |= S1AP_HANDOVERCOMMANDIES_E_RABSUBJECTTODATAFORWARDINGLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, (void**)&s1apERABSubjecttoDataForwardingList_p); + if (tempDecoded < 0 || s1apERABSubjecttoDataForwardingList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABSubjecttoDataForwardingList failed\n"); + if (s1apERABSubjecttoDataForwardingList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, s1apERABSubjecttoDataForwardingList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, s1apERABSubjecttoDataForwardingList_p); + memcpy(&s1ap_HandoverCommandIEs->e_RABSubjecttoDataForwardingList, s1apERABSubjecttoDataForwardingList_p, sizeof(S1ap_E_RABSubjecttoDataForwardingList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABtoReleaseListHOCmd: + { + S1ap_E_RABList_t *s1apERABList_p = NULL; + s1ap_HandoverCommandIEs->presenceMask |= S1AP_HANDOVERCOMMANDIES_E_RABTORELEASELISTHOCMD_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); + if (tempDecoded < 0 || s1apERABList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABtoReleaseListHOCmd failed\n"); + if (s1apERABList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABList, s1apERABList_p); + if (s1ap_decode_s1ap_e_rablist(&s1ap_HandoverCommandIEs->e_RABtoReleaseListHOCmd, s1apERABList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + } + } break; + case S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer: + { + S1ap_Target_ToSource_TransparentContainer_t *s1apTargetToSourceTransparentContainer_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, (void**)&s1apTargetToSourceTransparentContainer_p); + if (tempDecoded < 0 || s1apTargetToSourceTransparentContainer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE target_ToSource_TransparentContainer failed\n"); + if (s1apTargetToSourceTransparentContainer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Target_ToSource_TransparentContainer, s1apTargetToSourceTransparentContainer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, s1apTargetToSourceTransparentContainer_p); + memcpy(&s1ap_HandoverCommandIEs->target_ToSource_TransparentContainer, s1apTargetToSourceTransparentContainer_p, sizeof(S1ap_Target_ToSource_TransparentContainer_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer_Secondary: + { + S1ap_Target_ToSource_TransparentContainer_t *s1apTargetToSourceTransparentContainer_p = NULL; + s1ap_HandoverCommandIEs->presenceMask |= S1AP_HANDOVERCOMMANDIES_TARGET_TOSOURCE_TRANSPARENTCONTAINER_SECONDARY_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, (void**)&s1apTargetToSourceTransparentContainer_p); + if (tempDecoded < 0 || s1apTargetToSourceTransparentContainer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE target_ToSource_TransparentContainer_Secondary failed\n"); + if (s1apTargetToSourceTransparentContainer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Target_ToSource_TransparentContainer, s1apTargetToSourceTransparentContainer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, s1apTargetToSourceTransparentContainer_p); + memcpy(&s1ap_HandoverCommandIEs->target_ToSource_TransparentContainer_Secondary, s1apTargetToSourceTransparentContainer_p, sizeof(S1ap_Target_ToSource_TransparentContainer_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_HandoverCommandIEs->presenceMask |= S1AP_HANDOVERCOMMANDIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_HandoverCommandIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handovercommandies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_mmedirectinformationtransferies( + S1ap_MMEDirectInformationTransferIEs_t *s1ap_MMEDirectInformationTransferIEs, + ANY_t *any_p) { + + S1ap_MMEDirectInformationTransfer_t s1ap_MMEDirectInformationTransfer; + S1ap_MMEDirectInformationTransfer_t *s1ap_MMEDirectInformationTransfer_p = &s1ap_MMEDirectInformationTransfer; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_MMEDirectInformationTransferIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_MMEDirectInformationTransferIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_MMEDirectInformationTransfer, (void**)&s1ap_MMEDirectInformationTransfer_p); + + for (i = 0; i < s1ap_MMEDirectInformationTransfer_p->s1ap_MMEDirectInformationTransfer_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_MMEDirectInformationTransfer_p->s1ap_MMEDirectInformationTransfer_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Inter_SystemInformationTransferTypeMDT: + { + S1ap_Inter_SystemInformationTransferType_t *s1apInterSystemInformationTransferType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Inter_SystemInformationTransferType, (void**)&s1apInterSystemInformationTransferType_p); + if (tempDecoded < 0 || s1apInterSystemInformationTransferType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE inter_SystemInformationTransferTypeMDT failed\n"); + if (s1apInterSystemInformationTransferType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Inter_SystemInformationTransferType, s1apInterSystemInformationTransferType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Inter_SystemInformationTransferType, s1apInterSystemInformationTransferType_p); + memcpy(&s1ap_MMEDirectInformationTransferIEs->inter_SystemInformationTransferTypeMDT, s1apInterSystemInformationTransferType_p, sizeof(S1ap_Inter_SystemInformationTransferType_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_mmedirectinformationtransferies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_errorindicationies( + S1ap_ErrorIndicationIEs_t *s1ap_ErrorIndicationIEs, + ANY_t *any_p) { + + S1ap_ErrorIndication_t s1ap_ErrorIndication; + S1ap_ErrorIndication_t *s1ap_ErrorIndication_p = &s1ap_ErrorIndication; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ErrorIndicationIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ErrorIndicationIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_ErrorIndication, (void**)&s1ap_ErrorIndication_p); + + for (i = 0; i < s1ap_ErrorIndication_p->s1ap_ErrorIndication_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_ErrorIndication_p->s1ap_ErrorIndication_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + s1ap_ErrorIndicationIEs->presenceMask |= S1AP_ERRORINDICATIONIES_MME_UE_S1AP_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_ErrorIndicationIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + s1ap_ErrorIndicationIEs->presenceMask |= S1AP_ERRORINDICATIONIES_ENB_UE_S1AP_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_ErrorIndicationIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + s1ap_ErrorIndicationIEs->presenceMask |= S1AP_ERRORINDICATIONIES_CAUSE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_ErrorIndicationIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_ErrorIndicationIEs->presenceMask |= S1AP_ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_ErrorIndicationIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_errorindicationies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_overloadstarties( + S1ap_OverloadStartIEs_t *s1ap_OverloadStartIEs, + ANY_t *any_p) { + + S1ap_OverloadStart_t s1ap_OverloadStart; + S1ap_OverloadStart_t *s1ap_OverloadStart_p = &s1ap_OverloadStart; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_OverloadStartIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_OverloadStartIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_OverloadStart, (void**)&s1ap_OverloadStart_p); + + for (i = 0; i < s1ap_OverloadStart_p->s1ap_OverloadStart_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_OverloadStart_p->s1ap_OverloadStart_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_OverloadResponse: + { + S1ap_OverloadResponse_t *s1apOverloadResponse_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_OverloadResponse, (void**)&s1apOverloadResponse_p); + if (tempDecoded < 0 || s1apOverloadResponse_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE overloadResponse failed\n"); + if (s1apOverloadResponse_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_OverloadResponse, s1apOverloadResponse_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_OverloadResponse, s1apOverloadResponse_p); + memcpy(&s1ap_OverloadStartIEs->overloadResponse, s1apOverloadResponse_p, sizeof(S1ap_OverloadResponse_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_GUMMEIList: + { + S1ap_GUMMEIList_t *s1apGUMMEIList_p = NULL; + s1ap_OverloadStartIEs->presenceMask |= S1AP_OVERLOADSTARTIES_GUMMEILIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_GUMMEIList, (void**)&s1apGUMMEIList_p); + if (tempDecoded < 0 || s1apGUMMEIList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE gummeiList failed\n"); + if (s1apGUMMEIList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_GUMMEIList, s1apGUMMEIList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_GUMMEIList, s1apGUMMEIList_p); + memcpy(&s1ap_OverloadStartIEs->gummeiList, s1apGUMMEIList_p, sizeof(S1ap_GUMMEIList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_TrafficLoadReductionIndication: + { + S1ap_TrafficLoadReductionIndication_t *s1apTrafficLoadReductionIndication_p = NULL; + s1ap_OverloadStartIEs->presenceMask |= S1AP_OVERLOADSTARTIES_TRAFFICLOADREDUCTIONINDICATION_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TrafficLoadReductionIndication, (void**)&s1apTrafficLoadReductionIndication_p); + if (tempDecoded < 0 || s1apTrafficLoadReductionIndication_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE trafficLoadReductionIndication failed\n"); + if (s1apTrafficLoadReductionIndication_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TrafficLoadReductionIndication, s1apTrafficLoadReductionIndication_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TrafficLoadReductionIndication, s1apTrafficLoadReductionIndication_p); + memcpy(&s1ap_OverloadStartIEs->trafficLoadReductionIndication, s1apTrafficLoadReductionIndication_p, sizeof(S1ap_TrafficLoadReductionIndication_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_overloadstarties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_downlinknonueassociatedlppatransport_ies( + S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs, + ANY_t *any_p) { + + S1ap_DownlinkNonUEAssociatedLPPaTransport_t s1ap_DownlinkNonUEAssociatedLPPaTransport; + S1ap_DownlinkNonUEAssociatedLPPaTransport_t *s1ap_DownlinkNonUEAssociatedLPPaTransport_p = &s1ap_DownlinkNonUEAssociatedLPPaTransport; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_DownlinkNonUEAssociatedLPPaTransport, (void**)&s1ap_DownlinkNonUEAssociatedLPPaTransport_p); + + for (i = 0; i < s1ap_DownlinkNonUEAssociatedLPPaTransport_p->s1ap_DownlinkNonUEAssociatedLPPaTransport_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_DownlinkNonUEAssociatedLPPaTransport_p->s1ap_DownlinkNonUEAssociatedLPPaTransport_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Routing_ID: + { + S1ap_Routing_ID_t *s1apRoutingID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Routing_ID, (void**)&s1apRoutingID_p); + if (tempDecoded < 0 || s1apRoutingID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE routing_ID failed\n"); + if (s1apRoutingID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Routing_ID, s1apRoutingID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Routing_ID, s1apRoutingID_p); + memcpy(&s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs->routing_ID, s1apRoutingID_p, sizeof(S1ap_Routing_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_LPPa_PDU: + { + S1ap_LPPa_PDU_t *s1apLPPaPDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_LPPa_PDU, (void**)&s1apLPPaPDU_p); + if (tempDecoded < 0 || s1apLPPaPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE lpPa_PDU failed\n"); + if (s1apLPPaPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_LPPa_PDU, s1apLPPaPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_LPPa_PDU, s1apLPPaPDU_p); + memcpy(&s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs->lpPa_PDU, s1apLPPaPDU_p, sizeof(S1ap_LPPa_PDU_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_downlinknonueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handoverrequestacknowledgeies( + S1ap_HandoverRequestAcknowledgeIEs_t *s1ap_HandoverRequestAcknowledgeIEs, + ANY_t *any_p) { + + S1ap_HandoverRequestAcknowledge_t s1ap_HandoverRequestAcknowledge; + S1ap_HandoverRequestAcknowledge_t *s1ap_HandoverRequestAcknowledge_p = &s1ap_HandoverRequestAcknowledge; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverRequestAcknowledgeIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverRequestAcknowledgeIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverRequestAcknowledge, (void**)&s1ap_HandoverRequestAcknowledge_p); + + for (i = 0; i < s1ap_HandoverRequestAcknowledge_p->s1ap_HandoverRequestAcknowledge_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverRequestAcknowledge_p->s1ap_HandoverRequestAcknowledge_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverRequestAcknowledgeIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_HandoverRequestAcknowledgeIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABAdmittedList: + { + S1ap_E_RABAdmittedList_t *s1apERABAdmittedList_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABAdmittedList, (void**)&s1apERABAdmittedList_p); + if (tempDecoded < 0 || s1apERABAdmittedList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABAdmittedList failed\n"); + if (s1apERABAdmittedList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABAdmittedList, s1apERABAdmittedList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABAdmittedList, s1apERABAdmittedList_p); + memcpy(&s1ap_HandoverRequestAcknowledgeIEs->e_RABAdmittedList, s1apERABAdmittedList_p, sizeof(S1ap_E_RABAdmittedList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListHOReqAck: + { + S1ap_E_RABFailedtoSetupListHOReqAck_t *s1apERABFailedtoSetupListHOReqAck_p = NULL; + s1ap_HandoverRequestAcknowledgeIEs->presenceMask |= S1AP_HANDOVERREQUESTACKNOWLEDGEIES_E_RABFAILEDTOSETUPLISTHOREQACK_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, (void**)&s1apERABFailedtoSetupListHOReqAck_p); + if (tempDecoded < 0 || s1apERABFailedtoSetupListHOReqAck_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABFailedToSetupListHOReqAck failed\n"); + if (s1apERABFailedtoSetupListHOReqAck_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, s1apERABFailedtoSetupListHOReqAck_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, s1apERABFailedtoSetupListHOReqAck_p); + memcpy(&s1ap_HandoverRequestAcknowledgeIEs->e_RABFailedToSetupListHOReqAck, s1apERABFailedtoSetupListHOReqAck_p, sizeof(S1ap_E_RABFailedtoSetupListHOReqAck_t)); + } break; + case S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer: + { + S1ap_Target_ToSource_TransparentContainer_t *s1apTargetToSourceTransparentContainer_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, (void**)&s1apTargetToSourceTransparentContainer_p); + if (tempDecoded < 0 || s1apTargetToSourceTransparentContainer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE target_ToSource_TransparentContainer failed\n"); + if (s1apTargetToSourceTransparentContainer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Target_ToSource_TransparentContainer, s1apTargetToSourceTransparentContainer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Target_ToSource_TransparentContainer, s1apTargetToSourceTransparentContainer_p); + memcpy(&s1ap_HandoverRequestAcknowledgeIEs->target_ToSource_TransparentContainer, s1apTargetToSourceTransparentContainer_p, sizeof(S1ap_Target_ToSource_TransparentContainer_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSG_Id: + { + S1ap_CSG_Id_t *s1apCSGId_p = NULL; + s1ap_HandoverRequestAcknowledgeIEs->presenceMask |= S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CSG_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSG_Id, (void**)&s1apCSGId_p); + if (tempDecoded < 0 || s1apCSGId_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csG_Id failed\n"); + if (s1apCSGId_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + memcpy(&s1ap_HandoverRequestAcknowledgeIEs->csG_Id, s1apCSGId_p, sizeof(S1ap_CSG_Id_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_HandoverRequestAcknowledgeIEs->presenceMask |= S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_HandoverRequestAcknowledgeIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handoverrequestacknowledgeies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_downlinkueassociatedlppatransport_ies( + S1ap_DownlinkUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkUEAssociatedLPPaTransport_IEs, + ANY_t *any_p) { + + S1ap_DownlinkUEAssociatedLPPaTransport_t s1ap_DownlinkUEAssociatedLPPaTransport; + S1ap_DownlinkUEAssociatedLPPaTransport_t *s1ap_DownlinkUEAssociatedLPPaTransport_p = &s1ap_DownlinkUEAssociatedLPPaTransport; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_DownlinkUEAssociatedLPPaTransport_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_DownlinkUEAssociatedLPPaTransport_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_DownlinkUEAssociatedLPPaTransport, (void**)&s1ap_DownlinkUEAssociatedLPPaTransport_p); + + for (i = 0; i < s1ap_DownlinkUEAssociatedLPPaTransport_p->s1ap_DownlinkUEAssociatedLPPaTransport_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_DownlinkUEAssociatedLPPaTransport_p->s1ap_DownlinkUEAssociatedLPPaTransport_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_DownlinkUEAssociatedLPPaTransport_IEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_DownlinkUEAssociatedLPPaTransport_IEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Routing_ID: + { + S1ap_Routing_ID_t *s1apRoutingID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Routing_ID, (void**)&s1apRoutingID_p); + if (tempDecoded < 0 || s1apRoutingID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE routing_ID failed\n"); + if (s1apRoutingID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Routing_ID, s1apRoutingID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Routing_ID, s1apRoutingID_p); + memcpy(&s1ap_DownlinkUEAssociatedLPPaTransport_IEs->routing_ID, s1apRoutingID_p, sizeof(S1ap_Routing_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_LPPa_PDU: + { + S1ap_LPPa_PDU_t *s1apLPPaPDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_LPPa_PDU, (void**)&s1apLPPaPDU_p); + if (tempDecoded < 0 || s1apLPPaPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE lpPa_PDU failed\n"); + if (s1apLPPaPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_LPPa_PDU, s1apLPPaPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_LPPa_PDU, s1apLPPaPDU_p); + memcpy(&s1ap_DownlinkUEAssociatedLPPaTransport_IEs->lpPa_PDU, s1apLPPaPDU_p, sizeof(S1ap_LPPa_PDU_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_downlinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uecontextmodificationfailureies( + S1ap_UEContextModificationFailureIEs_t *s1ap_UEContextModificationFailureIEs, + ANY_t *any_p) { + + S1ap_UEContextModificationFailure_t s1ap_UEContextModificationFailure; + S1ap_UEContextModificationFailure_t *s1ap_UEContextModificationFailure_p = &s1ap_UEContextModificationFailure; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UEContextModificationFailureIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UEContextModificationFailureIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UEContextModificationFailure, (void**)&s1ap_UEContextModificationFailure_p); + + for (i = 0; i < s1ap_UEContextModificationFailure_p->s1ap_UEContextModificationFailure_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UEContextModificationFailure_p->s1ap_UEContextModificationFailure_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UEContextModificationFailureIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UEContextModificationFailureIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_UEContextModificationFailureIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_UEContextModificationFailureIEs->presenceMask |= S1AP_UECONTEXTMODIFICATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_UEContextModificationFailureIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uecontextmodificationfailureies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_mmeconfigurationtransferies( + S1ap_MMEConfigurationTransferIEs_t *s1ap_MMEConfigurationTransferIEs, + ANY_t *any_p) { + + S1ap_MMEConfigurationTransfer_t s1ap_MMEConfigurationTransfer; + S1ap_MMEConfigurationTransfer_t *s1ap_MMEConfigurationTransfer_p = &s1ap_MMEConfigurationTransfer; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_MMEConfigurationTransferIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_MMEConfigurationTransferIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_MMEConfigurationTransfer, (void**)&s1ap_MMEConfigurationTransfer_p); + + for (i = 0; i < s1ap_MMEConfigurationTransfer_p->s1ap_MMEConfigurationTransfer_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_MMEConfigurationTransfer_p->s1ap_MMEConfigurationTransfer_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SONConfigurationTransferMCT: + { + S1ap_SONConfigurationTransfer_t *s1apSONConfigurationTransfer_p = NULL; + s1ap_MMEConfigurationTransferIEs->presenceMask |= S1AP_MMECONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERMCT_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SONConfigurationTransfer, (void**)&s1apSONConfigurationTransfer_p); + if (tempDecoded < 0 || s1apSONConfigurationTransfer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE sonConfigurationTransferMCT failed\n"); + if (s1apSONConfigurationTransfer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SONConfigurationTransfer, s1apSONConfigurationTransfer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SONConfigurationTransfer, s1apSONConfigurationTransfer_p); + memcpy(&s1ap_MMEConfigurationTransferIEs->sonConfigurationTransferMCT, s1apSONConfigurationTransfer_p, sizeof(S1ap_SONConfigurationTransfer_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_mmeconfigurationtransferies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_pathswitchrequestacknowledgeies( + S1ap_PathSwitchRequestAcknowledgeIEs_t *s1ap_PathSwitchRequestAcknowledgeIEs, + ANY_t *any_p) { + + S1ap_PathSwitchRequestAcknowledge_t s1ap_PathSwitchRequestAcknowledge; + S1ap_PathSwitchRequestAcknowledge_t *s1ap_PathSwitchRequestAcknowledge_p = &s1ap_PathSwitchRequestAcknowledge; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_PathSwitchRequestAcknowledgeIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_PathSwitchRequestAcknowledgeIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_PathSwitchRequestAcknowledge, (void**)&s1ap_PathSwitchRequestAcknowledge_p); + + for (i = 0; i < s1ap_PathSwitchRequestAcknowledge_p->s1ap_PathSwitchRequestAcknowledge_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_PathSwitchRequestAcknowledge_p->s1ap_PathSwitchRequestAcknowledge_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_PathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_PathSwitchRequestAcknowledgeIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: + { + S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = NULL; + s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void**)&s1apUEAggregateMaximumBitrate_p); + if (tempDecoded < 0 || s1apUEAggregateMaximumBitrate_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uEaggregateMaximumBitrate failed\n"); + if (s1apUEAggregateMaximumBitrate_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + memcpy(&s1ap_PathSwitchRequestAcknowledgeIEs->uEaggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p, sizeof(S1ap_UEAggregateMaximumBitrate_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedULList: + { + S1ap_E_RABToBeSwitchedULList_t *s1apERABToBeSwitchedULList_p = NULL; + s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBESWITCHEDULLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSwitchedULList, (void**)&s1apERABToBeSwitchedULList_p); + if (tempDecoded < 0 || s1apERABToBeSwitchedULList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSwitchedULList failed\n"); + if (s1apERABToBeSwitchedULList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedULList, s1apERABToBeSwitchedULList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSwitchedULList, s1apERABToBeSwitchedULList_p); + memcpy(&s1ap_PathSwitchRequestAcknowledgeIEs->e_RABToBeSwitchedULList, s1apERABToBeSwitchedULList_p, sizeof(S1ap_E_RABToBeSwitchedULList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABToBeReleasedList: + { + S1ap_E_RABList_t *s1apERABList_p = NULL; + s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBERELEASEDLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); + if (tempDecoded < 0 || s1apERABList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeReleasedList failed\n"); + if (s1apERABList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABList, s1apERABList_p); + if (s1ap_decode_s1ap_e_rablist(&s1ap_PathSwitchRequestAcknowledgeIEs->e_RABToBeReleasedList, s1apERABList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + } + } break; + case S1ap_ProtocolIE_ID_id_SecurityContext: + { + S1ap_SecurityContext_t *s1apSecurityContext_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SecurityContext, (void**)&s1apSecurityContext_p); + if (tempDecoded < 0 || s1apSecurityContext_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE securityContext failed\n"); + if (s1apSecurityContext_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SecurityContext, s1apSecurityContext_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SecurityContext, s1apSecurityContext_p); + memcpy(&s1ap_PathSwitchRequestAcknowledgeIEs->securityContext, s1apSecurityContext_p, sizeof(S1ap_SecurityContext_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_PathSwitchRequestAcknowledgeIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask |= S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_MME_UE_S1AP_ID_2_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id_2 failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_PathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id_2, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_pathswitchrequestacknowledgeies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_s1setupfailureies( + S1ap_S1SetupFailureIEs_t *s1ap_S1SetupFailureIEs, + ANY_t *any_p) { + + S1ap_S1SetupFailure_t s1ap_S1SetupFailure; + S1ap_S1SetupFailure_t *s1ap_S1SetupFailure_p = &s1ap_S1SetupFailure; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_S1SetupFailureIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_S1SetupFailureIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_S1SetupFailure, (void**)&s1ap_S1SetupFailure_p); + + for (i = 0; i < s1ap_S1SetupFailure_p->s1ap_S1SetupFailure_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_S1SetupFailure_p->s1ap_S1SetupFailure_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_S1SetupFailureIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_TimeToWait: + { + S1ap_TimeToWait_t *s1apTimeToWait_p = NULL; + s1ap_S1SetupFailureIEs->presenceMask |= S1AP_S1SETUPFAILUREIES_TIMETOWAIT_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TimeToWait, (void**)&s1apTimeToWait_p); + if (tempDecoded < 0 || s1apTimeToWait_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE timeToWait failed\n"); + if (s1apTimeToWait_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TimeToWait, s1apTimeToWait_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TimeToWait, s1apTimeToWait_p); + memcpy(&s1ap_S1SetupFailureIEs->timeToWait, s1apTimeToWait_p, sizeof(S1ap_TimeToWait_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_S1SetupFailureIEs->presenceMask |= S1AP_S1SETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_S1SetupFailureIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_s1setupfailureies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_mmeconfigurationupdatefailureies( + S1ap_MMEConfigurationUpdateFailureIEs_t *s1ap_MMEConfigurationUpdateFailureIEs, + ANY_t *any_p) { + + S1ap_MMEConfigurationUpdateFailure_t s1ap_MMEConfigurationUpdateFailure; + S1ap_MMEConfigurationUpdateFailure_t *s1ap_MMEConfigurationUpdateFailure_p = &s1ap_MMEConfigurationUpdateFailure; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_MMEConfigurationUpdateFailureIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_MMEConfigurationUpdateFailureIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_MMEConfigurationUpdateFailure, (void**)&s1ap_MMEConfigurationUpdateFailure_p); + + for (i = 0; i < s1ap_MMEConfigurationUpdateFailure_p->s1ap_MMEConfigurationUpdateFailure_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_MMEConfigurationUpdateFailure_p->s1ap_MMEConfigurationUpdateFailure_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_MMEConfigurationUpdateFailureIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_TimeToWait: + { + S1ap_TimeToWait_t *s1apTimeToWait_p = NULL; + s1ap_MMEConfigurationUpdateFailureIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TimeToWait, (void**)&s1apTimeToWait_p); + if (tempDecoded < 0 || s1apTimeToWait_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE timeToWait failed\n"); + if (s1apTimeToWait_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TimeToWait, s1apTimeToWait_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TimeToWait, s1apTimeToWait_p); + memcpy(&s1ap_MMEConfigurationUpdateFailureIEs->timeToWait, s1apTimeToWait_p, sizeof(S1ap_TimeToWait_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_MMEConfigurationUpdateFailureIEs->presenceMask |= S1AP_MMECONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_MMEConfigurationUpdateFailureIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_mmeconfigurationupdatefailureies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_initialcontextsetupresponseies( + S1ap_InitialContextSetupResponseIEs_t *s1ap_InitialContextSetupResponseIEs, + ANY_t *any_p) { + + S1ap_InitialContextSetupResponse_t s1ap_InitialContextSetupResponse; + S1ap_InitialContextSetupResponse_t *s1ap_InitialContextSetupResponse_p = &s1ap_InitialContextSetupResponse; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_InitialContextSetupResponseIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_InitialContextSetupResponseIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_InitialContextSetupResponse, (void**)&s1ap_InitialContextSetupResponse_p); + + for (i = 0; i < s1ap_InitialContextSetupResponse_p->s1ap_InitialContextSetupResponse_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_InitialContextSetupResponse_p->s1ap_InitialContextSetupResponse_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_InitialContextSetupResponseIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_InitialContextSetupResponseIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABSetupListCtxtSURes: + { + S1ap_E_RABSetupListCtxtSURes_t *s1apERABSetupListCtxtSURes_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSetupListCtxtSURes, (void**)&s1apERABSetupListCtxtSURes_p); + if (tempDecoded < 0 || s1apERABSetupListCtxtSURes_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABSetupListCtxtSURes failed\n"); + if (s1apERABSetupListCtxtSURes_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupListCtxtSURes, s1apERABSetupListCtxtSURes_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABSetupListCtxtSURes, s1apERABSetupListCtxtSURes_p); + if (s1ap_decode_s1ap_e_rabsetuplistctxtsures(&s1ap_InitialContextSetupResponseIEs->e_RABSetupListCtxtSURes, s1apERABSetupListCtxtSURes_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABSetupListCtxtSURes failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupListCtxtSURes, s1apERABSetupListCtxtSURes_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListCtxtSURes: + { + S1ap_E_RABList_t *s1apERABList_p = NULL; + s1ap_InitialContextSetupResponseIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTCTXTSURES_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); + if (tempDecoded < 0 || s1apERABList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABFailedToSetupListCtxtSURes failed\n"); + if (s1apERABList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABList, s1apERABList_p); + if (s1ap_decode_s1ap_e_rablist(&s1ap_InitialContextSetupResponseIEs->e_RABFailedToSetupListCtxtSURes, s1apERABList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_InitialContextSetupResponseIEs->presenceMask |= S1AP_INITIALCONTEXTSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_InitialContextSetupResponseIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_initialcontextsetupresponseies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_downlinks1cdma2000tunnelingies( + S1ap_DownlinkS1cdma2000tunnelingIEs_t *s1ap_DownlinkS1cdma2000tunnelingIEs, + ANY_t *any_p) { + + S1ap_DownlinkS1cdma2000tunneling_t s1ap_DownlinkS1cdma2000tunneling; + S1ap_DownlinkS1cdma2000tunneling_t *s1ap_DownlinkS1cdma2000tunneling_p = &s1ap_DownlinkS1cdma2000tunneling; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_DownlinkS1cdma2000tunnelingIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_DownlinkS1cdma2000tunnelingIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_DownlinkS1cdma2000tunneling, (void**)&s1ap_DownlinkS1cdma2000tunneling_p); + + for (i = 0; i < s1ap_DownlinkS1cdma2000tunneling_p->s1ap_DownlinkS1cdma2000tunneling_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_DownlinkS1cdma2000tunneling_p->s1ap_DownlinkS1cdma2000tunneling_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_DownlinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_DownlinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABSubjecttoDataForwardingList: + { + S1ap_E_RABSubjecttoDataForwardingList_t *s1apERABSubjecttoDataForwardingList_p = NULL; + s1ap_DownlinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_E_RABSUBJECTTODATAFORWARDINGLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, (void**)&s1apERABSubjecttoDataForwardingList_p); + if (tempDecoded < 0 || s1apERABSubjecttoDataForwardingList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABSubjecttoDataForwardingList failed\n"); + if (s1apERABSubjecttoDataForwardingList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, s1apERABSubjecttoDataForwardingList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, s1apERABSubjecttoDataForwardingList_p); + memcpy(&s1ap_DownlinkS1cdma2000tunnelingIEs->e_RABSubjecttoDataForwardingList, s1apERABSubjecttoDataForwardingList_p, sizeof(S1ap_E_RABSubjecttoDataForwardingList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_cdma2000HOStatus: + { + S1ap_Cdma2000HOStatus_t *s1apCdma2000HOStatus_p = NULL; + s1ap_DownlinkS1cdma2000tunnelingIEs->presenceMask |= S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_CDMA2000HOSTATUS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000HOStatus, (void**)&s1apCdma2000HOStatus_p); + if (tempDecoded < 0 || s1apCdma2000HOStatus_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000HOStatus failed\n"); + if (s1apCdma2000HOStatus_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000HOStatus, s1apCdma2000HOStatus_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000HOStatus, s1apCdma2000HOStatus_p); + memcpy(&s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000HOStatus, s1apCdma2000HOStatus_p, sizeof(S1ap_Cdma2000HOStatus_t)); + } break; + case S1ap_ProtocolIE_ID_id_cdma2000RATType: + { + S1ap_Cdma2000RATType_t *s1apCdma2000RATType_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000RATType, (void**)&s1apCdma2000RATType_p); + if (tempDecoded < 0 || s1apCdma2000RATType_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000RATType failed\n"); + if (s1apCdma2000RATType_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000RATType, s1apCdma2000RATType_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000RATType, s1apCdma2000RATType_p); + memcpy(&s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000RATType, s1apCdma2000RATType_p, sizeof(S1ap_Cdma2000RATType_t)); + } break; + case S1ap_ProtocolIE_ID_id_cdma2000PDU: + { + S1ap_Cdma2000PDU_t *s1apCdma2000PDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cdma2000PDU, (void**)&s1apCdma2000PDU_p); + if (tempDecoded < 0 || s1apCdma2000PDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cdma2000PDU failed\n"); + if (s1apCdma2000PDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cdma2000PDU, s1apCdma2000PDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cdma2000PDU, s1apCdma2000PDU_p); + memcpy(&s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000PDU, s1apCdma2000PDU_p, sizeof(S1ap_Cdma2000PDU_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_downlinks1cdma2000tunnelingies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_overloadstopies( + S1ap_OverloadStopIEs_t *s1ap_OverloadStopIEs, + ANY_t *any_p) { + + S1ap_OverloadStop_t s1ap_OverloadStop; + S1ap_OverloadStop_t *s1ap_OverloadStop_p = &s1ap_OverloadStop; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_OverloadStopIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_OverloadStopIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_OverloadStop, (void**)&s1ap_OverloadStop_p); + + for (i = 0; i < s1ap_OverloadStop_p->s1ap_OverloadStop_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_OverloadStop_p->s1ap_OverloadStop_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_GUMMEIList: + { + S1ap_GUMMEIList_t *s1apGUMMEIList_p = NULL; + s1ap_OverloadStopIEs->presenceMask |= S1AP_OVERLOADSTOPIES_GUMMEILIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_GUMMEIList, (void**)&s1apGUMMEIList_p); + if (tempDecoded < 0 || s1apGUMMEIList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE gummeiList failed\n"); + if (s1apGUMMEIList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_GUMMEIList, s1apGUMMEIList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_GUMMEIList, s1apGUMMEIList_p); + memcpy(&s1ap_OverloadStopIEs->gummeiList, s1apGUMMEIList_p, sizeof(S1ap_GUMMEIList_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_overloadstopies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_enbconfigurationupdateies( + S1ap_ENBConfigurationUpdateIEs_t *s1ap_ENBConfigurationUpdateIEs, + ANY_t *any_p) { + + S1ap_ENBConfigurationUpdate_t s1ap_ENBConfigurationUpdate; + S1ap_ENBConfigurationUpdate_t *s1ap_ENBConfigurationUpdate_p = &s1ap_ENBConfigurationUpdate; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ENBConfigurationUpdateIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ENBConfigurationUpdateIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_ENBConfigurationUpdate, (void**)&s1ap_ENBConfigurationUpdate_p); + + for (i = 0; i < s1ap_ENBConfigurationUpdate_p->s1ap_ENBConfigurationUpdate_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_ENBConfigurationUpdate_p->s1ap_ENBConfigurationUpdate_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_eNBname: + { + S1ap_ENBname_t *s1apENBname_p = NULL; + s1ap_ENBConfigurationUpdateIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEIES_ENBNAME_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENBname, (void**)&s1apENBname_p); + if (tempDecoded < 0 || s1apENBname_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNBname failed\n"); + if (s1apENBname_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENBname, s1apENBname_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENBname, s1apENBname_p); + memcpy(&s1ap_ENBConfigurationUpdateIEs->eNBname, s1apENBname_p, sizeof(S1ap_ENBname_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SupportedTAs: + { + S1ap_SupportedTAs_t *s1apSupportedTAs_p = NULL; + s1ap_ENBConfigurationUpdateIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEIES_SUPPORTEDTAS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SupportedTAs, (void**)&s1apSupportedTAs_p); + if (tempDecoded < 0 || s1apSupportedTAs_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE supportedTAs failed\n"); + if (s1apSupportedTAs_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SupportedTAs, s1apSupportedTAs_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SupportedTAs, s1apSupportedTAs_p); + memcpy(&s1ap_ENBConfigurationUpdateIEs->supportedTAs, s1apSupportedTAs_p, sizeof(S1ap_SupportedTAs_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSG_IdList: + { + S1ap_CSG_IdList_t *s1apCSGIdList_p = NULL; + s1ap_ENBConfigurationUpdateIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEIES_CSG_IDLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSG_IdList, (void**)&s1apCSGIdList_p); + if (tempDecoded < 0 || s1apCSGIdList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csG_IdList failed\n"); + if (s1apCSGIdList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSG_IdList, s1apCSGIdList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSG_IdList, s1apCSGIdList_p); + memcpy(&s1ap_ENBConfigurationUpdateIEs->csG_IdList, s1apCSGIdList_p, sizeof(S1ap_CSG_IdList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_DefaultPagingDRX: + { + S1ap_PagingDRX_t *s1apPagingDRX_p = NULL; + s1ap_ENBConfigurationUpdateIEs->presenceMask |= S1AP_ENBCONFIGURATIONUPDATEIES_DEFAULTPAGINGDRX_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_PagingDRX, (void**)&s1apPagingDRX_p); + if (tempDecoded < 0 || s1apPagingDRX_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE defaultPagingDRX failed\n"); + if (s1apPagingDRX_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_PagingDRX, s1apPagingDRX_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_PagingDRX, s1apPagingDRX_p); + memcpy(&s1ap_ENBConfigurationUpdateIEs->defaultPagingDRX, s1apPagingDRX_p, sizeof(S1ap_PagingDRX_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_enbconfigurationupdateies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_tracefailureindicationies( + S1ap_TraceFailureIndicationIEs_t *s1ap_TraceFailureIndicationIEs, + ANY_t *any_p) { + + S1ap_TraceFailureIndication_t s1ap_TraceFailureIndication; + S1ap_TraceFailureIndication_t *s1ap_TraceFailureIndication_p = &s1ap_TraceFailureIndication; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_TraceFailureIndicationIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_TraceFailureIndicationIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_TraceFailureIndication, (void**)&s1ap_TraceFailureIndication_p); + + for (i = 0; i < s1ap_TraceFailureIndication_p->s1ap_TraceFailureIndication_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_TraceFailureIndication_p->s1ap_TraceFailureIndication_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_TraceFailureIndicationIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_TraceFailureIndicationIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID: + { + S1ap_E_UTRAN_Trace_ID_t *s1apEUTRANTraceID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_UTRAN_Trace_ID, (void**)&s1apEUTRANTraceID_p); + if (tempDecoded < 0 || s1apEUTRANTraceID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_UTRAN_Trace_ID failed\n"); + if (s1apEUTRANTraceID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_UTRAN_Trace_ID, s1apEUTRANTraceID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_UTRAN_Trace_ID, s1apEUTRANTraceID_p); + memcpy(&s1ap_TraceFailureIndicationIEs->e_UTRAN_Trace_ID, s1apEUTRANTraceID_p, sizeof(S1ap_E_UTRAN_Trace_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_TraceFailureIndicationIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_tracefailureindicationies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_enbconfigurationtransferies( + S1ap_ENBConfigurationTransferIEs_t *s1ap_ENBConfigurationTransferIEs, + ANY_t *any_p) { + + S1ap_ENBConfigurationTransfer_t s1ap_ENBConfigurationTransfer; + S1ap_ENBConfigurationTransfer_t *s1ap_ENBConfigurationTransfer_p = &s1ap_ENBConfigurationTransfer; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ENBConfigurationTransferIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ENBConfigurationTransferIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_ENBConfigurationTransfer, (void**)&s1ap_ENBConfigurationTransfer_p); + + for (i = 0; i < s1ap_ENBConfigurationTransfer_p->s1ap_ENBConfigurationTransfer_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_ENBConfigurationTransfer_p->s1ap_ENBConfigurationTransfer_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SONConfigurationTransferECT: + { + S1ap_SONConfigurationTransfer_t *s1apSONConfigurationTransfer_p = NULL; + s1ap_ENBConfigurationTransferIEs->presenceMask |= S1AP_ENBCONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERECT_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SONConfigurationTransfer, (void**)&s1apSONConfigurationTransfer_p); + if (tempDecoded < 0 || s1apSONConfigurationTransfer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE sonConfigurationTransferECT failed\n"); + if (s1apSONConfigurationTransfer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SONConfigurationTransfer, s1apSONConfigurationTransfer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SONConfigurationTransfer, s1apSONConfigurationTransfer_p); + memcpy(&s1ap_ENBConfigurationTransferIEs->sonConfigurationTransferECT, s1apSONConfigurationTransfer_p, sizeof(S1ap_SONConfigurationTransfer_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_enbconfigurationtransferies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_handoverfailureies( + S1ap_HandoverFailureIEs_t *s1ap_HandoverFailureIEs, + ANY_t *any_p) { + + S1ap_HandoverFailure_t s1ap_HandoverFailure; + S1ap_HandoverFailure_t *s1ap_HandoverFailure_p = &s1ap_HandoverFailure; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_HandoverFailureIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_HandoverFailureIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_HandoverFailure, (void**)&s1ap_HandoverFailure_p); + + for (i = 0; i < s1ap_HandoverFailure_p->s1ap_HandoverFailure_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_HandoverFailure_p->s1ap_HandoverFailure_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_HandoverFailureIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_HandoverFailureIEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_HandoverFailureIEs->presenceMask |= S1AP_HANDOVERFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_HandoverFailureIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_handoverfailureies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabsetupresponseies( + S1ap_E_RABSetupResponseIEs_t *s1ap_E_RABSetupResponseIEs, + ANY_t *any_p) { + + S1ap_E_RABSetupResponse_t s1ap_E_RABSetupResponse; + S1ap_E_RABSetupResponse_t *s1ap_E_RABSetupResponse_p = &s1ap_E_RABSetupResponse; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABSetupResponseIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABSetupResponseIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABSetupResponse, (void**)&s1ap_E_RABSetupResponse_p); + + for (i = 0; i < s1ap_E_RABSetupResponse_p->s1ap_E_RABSetupResponse_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABSetupResponse_p->s1ap_E_RABSetupResponse_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_E_RABSetupResponseIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_E_RABSetupResponseIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABSetupListBearerSURes: + { + S1ap_E_RABSetupListBearerSURes_t *s1apERABSetupListBearerSURes_p = NULL; + s1ap_E_RABSetupResponseIEs->presenceMask |= S1AP_E_RABSETUPRESPONSEIES_E_RABSETUPLISTBEARERSURES_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSetupListBearerSURes, (void**)&s1apERABSetupListBearerSURes_p); + if (tempDecoded < 0 || s1apERABSetupListBearerSURes_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABSetupListBearerSURes failed\n"); + if (s1apERABSetupListBearerSURes_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupListBearerSURes, s1apERABSetupListBearerSURes_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABSetupListBearerSURes, s1apERABSetupListBearerSURes_p); + if (s1ap_decode_s1ap_e_rabsetuplistbearersures(&s1ap_E_RABSetupResponseIEs->e_RABSetupListBearerSURes, s1apERABSetupListBearerSURes_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABSetupListBearerSURes failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupListBearerSURes, s1apERABSetupListBearerSURes_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListBearerSURes: + { + S1ap_E_RABList_t *s1apERABList_p = NULL; + s1ap_E_RABSetupResponseIEs->presenceMask |= S1AP_E_RABSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTBEARERSURES_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); + if (tempDecoded < 0 || s1apERABList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABFailedToSetupListBearerSURes failed\n"); + if (s1apERABList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABList, s1apERABList_p); + if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABSetupResponseIEs->e_RABFailedToSetupListBearerSURes, s1apERABList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_E_RABSetupResponseIEs->presenceMask |= S1AP_E_RABSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_E_RABSetupResponseIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabsetupresponseies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uecontextreleasecommand_ies( + S1ap_UEContextReleaseCommand_IEs_t *s1ap_UEContextReleaseCommand_IEs, + ANY_t *any_p) { + + S1ap_UEContextReleaseCommand_t s1ap_UEContextReleaseCommand; + S1ap_UEContextReleaseCommand_t *s1ap_UEContextReleaseCommand_p = &s1ap_UEContextReleaseCommand; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UEContextReleaseCommand_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UEContextReleaseCommand_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UEContextReleaseCommand, (void**)&s1ap_UEContextReleaseCommand_p); + + for (i = 0; i < s1ap_UEContextReleaseCommand_p->s1ap_UEContextReleaseCommand_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UEContextReleaseCommand_p->s1ap_UEContextReleaseCommand_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_UE_S1AP_IDs: + { + S1ap_UE_S1AP_IDs_t *s1apUES1APIDs_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UE_S1AP_IDs, (void**)&s1apUES1APIDs_p); + if (tempDecoded < 0 || s1apUES1APIDs_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uE_S1AP_IDs failed\n"); + if (s1apUES1APIDs_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UE_S1AP_IDs, s1apUES1APIDs_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UE_S1AP_IDs, s1apUES1APIDs_p); + memcpy(&s1ap_UEContextReleaseCommand_IEs->uE_S1AP_IDs, s1apUES1APIDs_p, sizeof(S1ap_UE_S1AP_IDs_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_UEContextReleaseCommand_IEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uecontextreleasecommand_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_pathswitchrequesties( + S1ap_PathSwitchRequestIEs_t *s1ap_PathSwitchRequestIEs, + ANY_t *any_p) { + + S1ap_PathSwitchRequest_t s1ap_PathSwitchRequest; + S1ap_PathSwitchRequest_t *s1ap_PathSwitchRequest_p = &s1ap_PathSwitchRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_PathSwitchRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_PathSwitchRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_PathSwitchRequest, (void**)&s1ap_PathSwitchRequest_p); + + for (i = 0; i < s1ap_PathSwitchRequest_p->s1ap_PathSwitchRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_PathSwitchRequest_p->s1ap_PathSwitchRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_PathSwitchRequestIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedDLList: + { + S1ap_E_RABToBeSwitchedDLList_t *s1apERABToBeSwitchedDLList_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSwitchedDLList, (void**)&s1apERABToBeSwitchedDLList_p); + if (tempDecoded < 0 || s1apERABToBeSwitchedDLList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSwitchedDLList failed\n"); + if (s1apERABToBeSwitchedDLList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSwitchedDLList, s1apERABToBeSwitchedDLList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSwitchedDLList, s1apERABToBeSwitchedDLList_p); + memcpy(&s1ap_PathSwitchRequestIEs->e_RABToBeSwitchedDLList, s1apERABToBeSwitchedDLList_p, sizeof(S1ap_E_RABToBeSwitchedDLList_t)); + } break; + case S1ap_ProtocolIE_ID_id_SourceMME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE sourceMME_UE_S1AP_ID failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_PathSwitchRequestIEs->sourceMME_UE_S1AP_ID, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: + { + S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_EUTRAN_CGI, (void**)&s1apEUTRANCGI_p); + if (tempDecoded < 0 || s1apEUTRANCGI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eutran_cgi failed\n"); + if (s1apEUTRANCGI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + memcpy(&s1ap_PathSwitchRequestIEs->eutran_cgi, s1apEUTRANCGI_p, sizeof(S1ap_EUTRAN_CGI_t)); + } break; + case S1ap_ProtocolIE_ID_id_TAI: + { + S1ap_TAI_t *s1apTAI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAI, (void**)&s1apTAI_p); + if (tempDecoded < 0 || s1apTAI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE tai failed\n"); + if (s1apTAI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TAI, s1apTAI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TAI, s1apTAI_p); + memcpy(&s1ap_PathSwitchRequestIEs->tai, s1apTAI_p, sizeof(S1ap_TAI_t)); + } break; + case S1ap_ProtocolIE_ID_id_UESecurityCapabilities: + { + S1ap_UESecurityCapabilities_t *s1apUESecurityCapabilities_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UESecurityCapabilities, (void**)&s1apUESecurityCapabilities_p); + if (tempDecoded < 0 || s1apUESecurityCapabilities_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE ueSecurityCapabilities failed\n"); + if (s1apUESecurityCapabilities_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UESecurityCapabilities, s1apUESecurityCapabilities_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UESecurityCapabilities, s1apUESecurityCapabilities_p); + memcpy(&s1ap_PathSwitchRequestIEs->ueSecurityCapabilities, s1apUESecurityCapabilities_p, sizeof(S1ap_UESecurityCapabilities_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSG_Id: + { + S1ap_CSG_Id_t *s1apCSGId_p = NULL; + s1ap_PathSwitchRequestIEs->presenceMask |= S1AP_PATHSWITCHREQUESTIES_CSG_ID_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSG_Id, (void**)&s1apCSGId_p); + if (tempDecoded < 0 || s1apCSGId_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csG_Id failed\n"); + if (s1apCSGId_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSG_Id, s1apCSGId_p); + memcpy(&s1ap_PathSwitchRequestIEs->csG_Id, s1apCSGId_p, sizeof(S1ap_CSG_Id_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CellAccessMode: + { + S1ap_CellAccessMode_t *s1apCellAccessMode_p = NULL; + s1ap_PathSwitchRequestIEs->presenceMask |= S1AP_PATHSWITCHREQUESTIES_CELLACCESSMODE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CellAccessMode, (void**)&s1apCellAccessMode_p); + if (tempDecoded < 0 || s1apCellAccessMode_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cellAccessMode failed\n"); + if (s1apCellAccessMode_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CellAccessMode, s1apCellAccessMode_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CellAccessMode, s1apCellAccessMode_p); + memcpy(&s1ap_PathSwitchRequestIEs->cellAccessMode, s1apCellAccessMode_p, sizeof(S1ap_CellAccessMode_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SourceMME_S1ap_GUMMEI: + { + S1ap_GUMMEI_t *s1apGUMMEI_p = NULL; + s1ap_PathSwitchRequestIEs->presenceMask |= S1AP_PATHSWITCHREQUESTIES_SOURCEMME_S1AP_GUMMEI_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_GUMMEI, (void**)&s1apGUMMEI_p); + if (tempDecoded < 0 || s1apGUMMEI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE sourceMME_S1ap_GUMMEI failed\n"); + if (s1apGUMMEI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_GUMMEI, s1apGUMMEI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_GUMMEI, s1apGUMMEI_p); + memcpy(&s1ap_PathSwitchRequestIEs->sourceMME_S1ap_GUMMEI, s1apGUMMEI_p, sizeof(S1ap_GUMMEI_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_pathswitchrequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_downlinknastransport_ies( + S1ap_DownlinkNASTransport_IEs_t *s1ap_DownlinkNASTransport_IEs, + ANY_t *any_p) { + + S1ap_DownlinkNASTransport_t s1ap_DownlinkNASTransport; + S1ap_DownlinkNASTransport_t *s1ap_DownlinkNASTransport_p = &s1ap_DownlinkNASTransport; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_DownlinkNASTransport_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_DownlinkNASTransport_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_DownlinkNASTransport, (void**)&s1ap_DownlinkNASTransport_p); + + for (i = 0; i < s1ap_DownlinkNASTransport_p->s1ap_DownlinkNASTransport_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_DownlinkNASTransport_p->s1ap_DownlinkNASTransport_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_DownlinkNASTransport_IEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_DownlinkNASTransport_IEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_NAS_PDU: + { + S1ap_NAS_PDU_t *s1apNASPDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_NAS_PDU, (void**)&s1apNASPDU_p); + if (tempDecoded < 0 || s1apNASPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE nas_pdu failed\n"); + if (s1apNASPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + memcpy(&s1ap_DownlinkNASTransport_IEs->nas_pdu, s1apNASPDU_p, sizeof(S1ap_NAS_PDU_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_HandoverRestrictionList: + { + S1ap_HandoverRestrictionList_t *s1apHandoverRestrictionList_p = NULL; + s1ap_DownlinkNASTransport_IEs->presenceMask |= S1AP_DOWNLINKNASTRANSPORT_IES_HANDOVERRESTRICTIONLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_HandoverRestrictionList, (void**)&s1apHandoverRestrictionList_p); + if (tempDecoded < 0 || s1apHandoverRestrictionList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE handoverRestrictionList failed\n"); + if (s1apHandoverRestrictionList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_HandoverRestrictionList, s1apHandoverRestrictionList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_HandoverRestrictionList, s1apHandoverRestrictionList_p); + memcpy(&s1ap_DownlinkNASTransport_IEs->handoverRestrictionList, s1apHandoverRestrictionList_p, sizeof(S1ap_HandoverRestrictionList_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP: + { + S1ap_SubscriberProfileIDforRFP_t *s1apSubscriberProfileIDforRFP_p = NULL; + s1ap_DownlinkNASTransport_IEs->presenceMask |= S1AP_DOWNLINKNASTRANSPORT_IES_SUBSCRIBERPROFILEIDFORRFP_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SubscriberProfileIDforRFP, (void**)&s1apSubscriberProfileIDforRFP_p); + if (tempDecoded < 0 || s1apSubscriberProfileIDforRFP_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE subscriberProfileIDforRFP failed\n"); + if (s1apSubscriberProfileIDforRFP_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SubscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SubscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p); + memcpy(&s1ap_DownlinkNASTransport_IEs->subscriberProfileIDforRFP, s1apSubscriberProfileIDforRFP_p, sizeof(S1ap_SubscriberProfileIDforRFP_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_downlinknastransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabreleaseindicationies( + S1ap_E_RABReleaseIndicationIEs_t *s1ap_E_RABReleaseIndicationIEs, + ANY_t *any_p) { + + S1ap_E_RABReleaseIndication_t s1ap_E_RABReleaseIndication; + S1ap_E_RABReleaseIndication_t *s1ap_E_RABReleaseIndication_p = &s1ap_E_RABReleaseIndication; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABReleaseIndicationIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABReleaseIndicationIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABReleaseIndication, (void**)&s1ap_E_RABReleaseIndication_p); + + for (i = 0; i < s1ap_E_RABReleaseIndication_p->s1ap_E_RABReleaseIndication_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABReleaseIndication_p->s1ap_E_RABReleaseIndication_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_E_RABReleaseIndicationIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_E_RABReleaseIndicationIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABReleasedList: + { + S1ap_E_RABList_t *s1apERABList_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABList, (void**)&s1apERABList_p); + if (tempDecoded < 0 || s1apERABList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABReleasedList failed\n"); + if (s1apERABList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABList, s1apERABList_p); + if (s1ap_decode_s1ap_e_rablist(&s1ap_E_RABReleaseIndicationIEs->e_RABReleasedList, s1apERABList_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABList failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABList, s1apERABList_p); + } + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabreleaseindicationies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_s1setuprequesties( + S1ap_S1SetupRequestIEs_t *s1ap_S1SetupRequestIEs, + ANY_t *any_p) { + + S1ap_S1SetupRequest_t s1ap_S1SetupRequest; + S1ap_S1SetupRequest_t *s1ap_S1SetupRequest_p = &s1ap_S1SetupRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_S1SetupRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_S1SetupRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_S1SetupRequest, (void**)&s1ap_S1SetupRequest_p); + + for (i = 0; i < s1ap_S1SetupRequest_p->s1ap_S1SetupRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_S1SetupRequest_p->s1ap_S1SetupRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_Global_ENB_ID: + { + S1ap_Global_ENB_ID_t *s1apGlobalENBID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Global_ENB_ID, (void**)&s1apGlobalENBID_p); + if (tempDecoded < 0 || s1apGlobalENBID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE global_ENB_ID failed\n"); + if (s1apGlobalENBID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Global_ENB_ID, s1apGlobalENBID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Global_ENB_ID, s1apGlobalENBID_p); + memcpy(&s1ap_S1SetupRequestIEs->global_ENB_ID, s1apGlobalENBID_p, sizeof(S1ap_Global_ENB_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_eNBname: + { + S1ap_ENBname_t *s1apENBname_p = NULL; + s1ap_S1SetupRequestIEs->presenceMask |= S1AP_S1SETUPREQUESTIES_ENBNAME_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENBname, (void**)&s1apENBname_p); + if (tempDecoded < 0 || s1apENBname_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNBname failed\n"); + if (s1apENBname_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENBname, s1apENBname_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENBname, s1apENBname_p); + memcpy(&s1ap_S1SetupRequestIEs->eNBname, s1apENBname_p, sizeof(S1ap_ENBname_t)); + } break; + case S1ap_ProtocolIE_ID_id_SupportedTAs: + { + S1ap_SupportedTAs_t *s1apSupportedTAs_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_SupportedTAs, (void**)&s1apSupportedTAs_p); + if (tempDecoded < 0 || s1apSupportedTAs_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE supportedTAs failed\n"); + if (s1apSupportedTAs_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_SupportedTAs, s1apSupportedTAs_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_SupportedTAs, s1apSupportedTAs_p); + memcpy(&s1ap_S1SetupRequestIEs->supportedTAs, s1apSupportedTAs_p, sizeof(S1ap_SupportedTAs_t)); + } break; + case S1ap_ProtocolIE_ID_id_DefaultPagingDRX: + { + S1ap_PagingDRX_t *s1apPagingDRX_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_PagingDRX, (void**)&s1apPagingDRX_p); + if (tempDecoded < 0 || s1apPagingDRX_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE defaultPagingDRX failed\n"); + if (s1apPagingDRX_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_PagingDRX, s1apPagingDRX_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_PagingDRX, s1apPagingDRX_p); + memcpy(&s1ap_S1SetupRequestIEs->defaultPagingDRX, s1apPagingDRX_p, sizeof(S1ap_PagingDRX_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CSG_IdList: + { + S1ap_CSG_IdList_t *s1apCSGIdList_p = NULL; + s1ap_S1SetupRequestIEs->presenceMask |= S1AP_S1SETUPREQUESTIES_CSG_IDLIST_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CSG_IdList, (void**)&s1apCSGIdList_p); + if (tempDecoded < 0 || s1apCSGIdList_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE csG_IdList failed\n"); + if (s1apCSGIdList_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CSG_IdList, s1apCSGIdList_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CSG_IdList, s1apCSGIdList_p); + memcpy(&s1ap_S1SetupRequestIEs->csG_IdList, s1apCSGIdList_p, sizeof(S1ap_CSG_IdList_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_s1setuprequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_nasnondeliveryindication_ies( + S1ap_NASNonDeliveryIndication_IEs_t *s1ap_NASNonDeliveryIndication_IEs, + ANY_t *any_p) { + + S1ap_NASNonDeliveryIndication_t s1ap_NASNonDeliveryIndication; + S1ap_NASNonDeliveryIndication_t *s1ap_NASNonDeliveryIndication_p = &s1ap_NASNonDeliveryIndication; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_NASNonDeliveryIndication_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_NASNonDeliveryIndication_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_NASNonDeliveryIndication, (void**)&s1ap_NASNonDeliveryIndication_p); + + for (i = 0; i < s1ap_NASNonDeliveryIndication_p->s1ap_NASNonDeliveryIndication_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_NASNonDeliveryIndication_p->s1ap_NASNonDeliveryIndication_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_NASNonDeliveryIndication_IEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_NASNonDeliveryIndication_IEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_NAS_PDU: + { + S1ap_NAS_PDU_t *s1apNASPDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_NAS_PDU, (void**)&s1apNASPDU_p); + if (tempDecoded < 0 || s1apNASPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE nas_pdu failed\n"); + if (s1apNASPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_NAS_PDU, s1apNASPDU_p); + memcpy(&s1ap_NASNonDeliveryIndication_IEs->nas_pdu, s1apNASPDU_p, sizeof(S1ap_NAS_PDU_t)); + } break; + case S1ap_ProtocolIE_ID_id_Cause: + { + S1ap_Cause_t *s1apCause_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Cause, (void**)&s1apCause_p); + if (tempDecoded < 0 || s1apCause_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE cause failed\n"); + if (s1apCause_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Cause, s1apCause_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Cause, s1apCause_p); + memcpy(&s1ap_NASNonDeliveryIndication_IEs->cause, s1apCause_p, sizeof(S1ap_Cause_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_nasnondeliveryindication_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_celltraffictraceies( + S1ap_CellTrafficTraceIEs_t *s1ap_CellTrafficTraceIEs, + ANY_t *any_p) { + + S1ap_CellTrafficTrace_t s1ap_CellTrafficTrace; + S1ap_CellTrafficTrace_t *s1ap_CellTrafficTrace_p = &s1ap_CellTrafficTrace; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_CellTrafficTraceIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_CellTrafficTraceIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_CellTrafficTrace, (void**)&s1ap_CellTrafficTrace_p); + + for (i = 0; i < s1ap_CellTrafficTrace_p->s1ap_CellTrafficTrace_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_CellTrafficTrace_p->s1ap_CellTrafficTrace_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_CellTrafficTraceIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_CellTrafficTraceIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID: + { + S1ap_E_UTRAN_Trace_ID_t *s1apEUTRANTraceID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_UTRAN_Trace_ID, (void**)&s1apEUTRANTraceID_p); + if (tempDecoded < 0 || s1apEUTRANTraceID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_UTRAN_Trace_ID failed\n"); + if (s1apEUTRANTraceID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_UTRAN_Trace_ID, s1apEUTRANTraceID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_UTRAN_Trace_ID, s1apEUTRANTraceID_p); + memcpy(&s1ap_CellTrafficTraceIEs->e_UTRAN_Trace_ID, s1apEUTRANTraceID_p, sizeof(S1ap_E_UTRAN_Trace_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_EUTRAN_CGI: + { + S1ap_EUTRAN_CGI_t *s1apEUTRANCGI_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_EUTRAN_CGI, (void**)&s1apEUTRANCGI_p); + if (tempDecoded < 0 || s1apEUTRANCGI_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eutran_cgi failed\n"); + if (s1apEUTRANCGI_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_EUTRAN_CGI, s1apEUTRANCGI_p); + memcpy(&s1ap_CellTrafficTraceIEs->eutran_cgi, s1apEUTRANCGI_p, sizeof(S1ap_EUTRAN_CGI_t)); + } break; + case S1ap_ProtocolIE_ID_id_TraceCollectionEntityIPAddress: + { + S1ap_TransportLayerAddress_t *s1apTransportLayerAddress_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TransportLayerAddress, (void**)&s1apTransportLayerAddress_p); + if (tempDecoded < 0 || s1apTransportLayerAddress_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE traceCollectionEntityIPAddress failed\n"); + if (s1apTransportLayerAddress_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TransportLayerAddress, s1apTransportLayerAddress_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TransportLayerAddress, s1apTransportLayerAddress_p); + memcpy(&s1ap_CellTrafficTraceIEs->traceCollectionEntityIPAddress, s1apTransportLayerAddress_p, sizeof(S1ap_TransportLayerAddress_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_PrivacyIndicator: + { + S1ap_PrivacyIndicator_t *s1apPrivacyIndicator_p = NULL; + s1ap_CellTrafficTraceIEs->presenceMask |= S1AP_CELLTRAFFICTRACEIES_PRIVACYINDICATOR_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_PrivacyIndicator, (void**)&s1apPrivacyIndicator_p); + if (tempDecoded < 0 || s1apPrivacyIndicator_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE privacyIndicator failed\n"); + if (s1apPrivacyIndicator_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_PrivacyIndicator, s1apPrivacyIndicator_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_PrivacyIndicator, s1apPrivacyIndicator_p); + memcpy(&s1ap_CellTrafficTraceIEs->privacyIndicator, s1apPrivacyIndicator_p, sizeof(S1ap_PrivacyIndicator_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_celltraffictraceies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabsetuprequesties( + S1ap_E_RABSetupRequestIEs_t *s1ap_E_RABSetupRequestIEs, + ANY_t *any_p) { + + S1ap_E_RABSetupRequest_t s1ap_E_RABSetupRequest; + S1ap_E_RABSetupRequest_t *s1ap_E_RABSetupRequest_p = &s1ap_E_RABSetupRequest; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_E_RABSetupRequestIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_E_RABSetupRequestIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_E_RABSetupRequest, (void**)&s1ap_E_RABSetupRequest_p); + + for (i = 0; i < s1ap_E_RABSetupRequest_p->s1ap_E_RABSetupRequest_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_E_RABSetupRequest_p->s1ap_E_RABSetupRequest_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_E_RABSetupRequestIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_E_RABSetupRequestIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate: + { + S1ap_UEAggregateMaximumBitrate_t *s1apUEAggregateMaximumBitrate_p = NULL; + s1ap_E_RABSetupRequestIEs->presenceMask |= S1AP_E_RABSETUPREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UEAggregateMaximumBitrate, (void**)&s1apUEAggregateMaximumBitrate_p); + if (tempDecoded < 0 || s1apUEAggregateMaximumBitrate_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uEaggregateMaximumBitrate failed\n"); + if (s1apUEAggregateMaximumBitrate_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UEAggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p); + memcpy(&s1ap_E_RABSetupRequestIEs->uEaggregateMaximumBitrate, s1apUEAggregateMaximumBitrate_p, sizeof(S1ap_UEAggregateMaximumBitrate_t)); + } break; + case S1ap_ProtocolIE_ID_id_E_RABToBeSetupListBearerSUReq: + { + S1ap_E_RABToBeSetupListBearerSUReq_t *s1apERABToBeSetupListBearerSUReq_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, (void**)&s1apERABToBeSetupListBearerSUReq_p); + if (tempDecoded < 0 || s1apERABToBeSetupListBearerSUReq_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSetupListBearerSUReq failed\n"); + if (s1apERABToBeSetupListBearerSUReq_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, s1apERABToBeSetupListBearerSUReq_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, s1apERABToBeSetupListBearerSUReq_p); + if (s1ap_decode_s1ap_e_rabtobesetuplistbearersureq(&s1ap_E_RABSetupRequestIEs->e_RABToBeSetupListBearerSUReq, s1apERABToBeSetupListBearerSUReq_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apERABToBeSetupListBearerSUReq failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, s1apERABToBeSetupListBearerSUReq_p); + } + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_e_rabsetuprequesties\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_enbstatustransferies( + S1ap_ENBStatusTransferIEs_t *s1ap_ENBStatusTransferIEs, + ANY_t *any_p) { + + S1ap_ENBStatusTransfer_t s1ap_ENBStatusTransfer; + S1ap_ENBStatusTransfer_t *s1ap_ENBStatusTransfer_p = &s1ap_ENBStatusTransfer; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ENBStatusTransferIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ENBStatusTransferIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_ENBStatusTransfer, (void**)&s1ap_ENBStatusTransfer_p); + + for (i = 0; i < s1ap_ENBStatusTransfer_p->s1ap_ENBStatusTransfer_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_ENBStatusTransfer_p->s1ap_ENBStatusTransfer_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_ENBStatusTransferIEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_ENBStatusTransferIEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_StatusTransfer_TransparentContainer: + { + S1ap_ENB_StatusTransfer_TransparentContainer_t *s1apENBStatusTransferTransparentContainer_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, (void**)&s1apENBStatusTransferTransparentContainer_p); + if (tempDecoded < 0 || s1apENBStatusTransferTransparentContainer_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_StatusTransfer_TransparentContainer failed\n"); + if (s1apENBStatusTransferTransparentContainer_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, s1apENBStatusTransferTransparentContainer_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, s1apENBStatusTransferTransparentContainer_p); + memcpy(&s1ap_ENBStatusTransferIEs->eNB_StatusTransfer_TransparentContainer, s1apENBStatusTransferTransparentContainer_p, sizeof(S1ap_ENB_StatusTransfer_TransparentContainer_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_enbstatustransferies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_resetacknowledgeies( + S1ap_ResetAcknowledgeIEs_t *s1ap_ResetAcknowledgeIEs, + ANY_t *any_p) { + + S1ap_ResetAcknowledge_t s1ap_ResetAcknowledge; + S1ap_ResetAcknowledge_t *s1ap_ResetAcknowledge_p = &s1ap_ResetAcknowledge; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_ResetAcknowledgeIEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_ResetAcknowledgeIEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_ResetAcknowledge, (void**)&s1ap_ResetAcknowledge_p); + + for (i = 0; i < s1ap_ResetAcknowledge_p->s1ap_ResetAcknowledge_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_ResetAcknowledge_p->s1ap_ResetAcknowledge_ies.list.array[i]; + switch(ie_p->id) { + /* Optional field */ + case S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionListResAck: + { + S1ap_UE_associatedLogicalS1_ConnectionListResAck_t *s1apUEassociatedLogicalS1ConnectionListResAck_p = NULL; + s1ap_ResetAcknowledgeIEs->presenceMask |= S1AP_RESETACKNOWLEDGEIES_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListResAck, (void**)&s1apUEassociatedLogicalS1ConnectionListResAck_p); + if (tempDecoded < 0 || s1apUEassociatedLogicalS1ConnectionListResAck_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uE_associatedLogicalS1_ConnectionListResAck failed\n"); + if (s1apUEassociatedLogicalS1ConnectionListResAck_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListResAck, s1apUEassociatedLogicalS1ConnectionListResAck_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListResAck, s1apUEassociatedLogicalS1ConnectionListResAck_p); + if (s1ap_decode_s1ap_ue_associatedlogicals1_connectionlistresack(&s1ap_ResetAcknowledgeIEs->uE_associatedLogicalS1_ConnectionListResAck, s1apUEassociatedLogicalS1ConnectionListResAck_p) < 0) { + OAILOG_ERROR (LOG_S1AP, "Decoding of encapsulated IE s1apUEassociatedLogicalS1ConnectionListResAck failed\n"); + ASN_STRUCT_FREE(asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListResAck, s1apUEassociatedLogicalS1ConnectionListResAck_p); + } + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_ResetAcknowledgeIEs->presenceMask |= S1AP_RESETACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_ResetAcknowledgeIEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_resetacknowledgeies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uecontextreleasecomplete_ies( + S1ap_UEContextReleaseComplete_IEs_t *s1ap_UEContextReleaseComplete_IEs, + ANY_t *any_p) { + + S1ap_UEContextReleaseComplete_t s1ap_UEContextReleaseComplete; + S1ap_UEContextReleaseComplete_t *s1ap_UEContextReleaseComplete_p = &s1ap_UEContextReleaseComplete; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UEContextReleaseComplete_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UEContextReleaseComplete_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UEContextReleaseComplete, (void**)&s1ap_UEContextReleaseComplete_p); + + for (i = 0; i < s1ap_UEContextReleaseComplete_p->s1ap_UEContextReleaseComplete_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UEContextReleaseComplete_p->s1ap_UEContextReleaseComplete_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UEContextReleaseComplete_IEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UEContextReleaseComplete_IEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + /* Optional field */ + case S1ap_ProtocolIE_ID_id_CriticalityDiagnostics: + { + S1ap_CriticalityDiagnostics_t *s1apCriticalityDiagnostics_p = NULL; + s1ap_UEContextReleaseComplete_IEs->presenceMask |= S1AP_UECONTEXTRELEASECOMPLETE_IES_CRITICALITYDIAGNOSTICS_PRESENT; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_CriticalityDiagnostics, (void**)&s1apCriticalityDiagnostics_p); + if (tempDecoded < 0 || s1apCriticalityDiagnostics_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE criticalityDiagnostics failed\n"); + if (s1apCriticalityDiagnostics_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_CriticalityDiagnostics, s1apCriticalityDiagnostics_p); + memcpy(&s1ap_UEContextReleaseComplete_IEs->criticalityDiagnostics, s1apCriticalityDiagnostics_p, sizeof(S1ap_CriticalityDiagnostics_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uecontextreleasecomplete_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_uplinkueassociatedlppatransport_ies( + S1ap_UplinkUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkUEAssociatedLPPaTransport_IEs, + ANY_t *any_p) { + + S1ap_UplinkUEAssociatedLPPaTransport_t s1ap_UplinkUEAssociatedLPPaTransport; + S1ap_UplinkUEAssociatedLPPaTransport_t *s1ap_UplinkUEAssociatedLPPaTransport_p = &s1ap_UplinkUEAssociatedLPPaTransport; + int i, decoded = 0; + int tempDecoded = 0; + assert(any_p != NULL); + assert(s1ap_UplinkUEAssociatedLPPaTransport_IEs != NULL); + + OAILOG_DEBUG (LOG_S1AP, "Decoding message S1ap_UplinkUEAssociatedLPPaTransport_IEs (%s:%d)\n", __FILE__, __LINE__); + + ANY_to_type_aper(any_p, &asn_DEF_S1ap_UplinkUEAssociatedLPPaTransport, (void**)&s1ap_UplinkUEAssociatedLPPaTransport_p); + + for (i = 0; i < s1ap_UplinkUEAssociatedLPPaTransport_p->s1ap_UplinkUEAssociatedLPPaTransport_ies.list.count; i++) { + S1ap_IE_t *ie_p; + ie_p = s1ap_UplinkUEAssociatedLPPaTransport_p->s1ap_UplinkUEAssociatedLPPaTransport_ies.list.array[i]; + switch(ie_p->id) { + case S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID: + { + S1ap_MME_UE_S1AP_ID_t *s1apMMEUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_MME_UE_S1AP_ID, (void**)&s1apMMEUES1APID_p); + if (tempDecoded < 0 || s1apMMEUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE mme_ue_s1ap_id failed\n"); + if (s1apMMEUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_MME_UE_S1AP_ID, s1apMMEUES1APID_p); + memcpy(&s1ap_UplinkUEAssociatedLPPaTransport_IEs->mme_ue_s1ap_id, s1apMMEUES1APID_p, sizeof(S1ap_MME_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID: + { + S1ap_ENB_UE_S1AP_ID_t *s1apENBUES1APID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_ENB_UE_S1AP_ID, (void**)&s1apENBUES1APID_p); + if (tempDecoded < 0 || s1apENBUES1APID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE eNB_UE_S1AP_ID failed\n"); + if (s1apENBUES1APID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_ENB_UE_S1AP_ID, s1apENBUES1APID_p); + memcpy(&s1ap_UplinkUEAssociatedLPPaTransport_IEs->eNB_UE_S1AP_ID, s1apENBUES1APID_p, sizeof(S1ap_ENB_UE_S1AP_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_Routing_ID: + { + S1ap_Routing_ID_t *s1apRoutingID_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Routing_ID, (void**)&s1apRoutingID_p); + if (tempDecoded < 0 || s1apRoutingID_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE routing_ID failed\n"); + if (s1apRoutingID_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Routing_ID, s1apRoutingID_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Routing_ID, s1apRoutingID_p); + memcpy(&s1ap_UplinkUEAssociatedLPPaTransport_IEs->routing_ID, s1apRoutingID_p, sizeof(S1ap_Routing_ID_t)); + } break; + case S1ap_ProtocolIE_ID_id_LPPa_PDU: + { + S1ap_LPPa_PDU_t *s1apLPPaPDU_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_LPPa_PDU, (void**)&s1apLPPaPDU_p); + if (tempDecoded < 0 || s1apLPPaPDU_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE lpPa_PDU failed\n"); + if (s1apLPPaPDU_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_LPPa_PDU, s1apLPPaPDU_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_LPPa_PDU, s1apLPPaPDU_p); + memcpy(&s1ap_UplinkUEAssociatedLPPaTransport_IEs->lpPa_PDU, s1apLPPaPDU_p, sizeof(S1ap_LPPa_PDU_t)); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabreleaselistbearerrelcomp( + S1ap_E_RABReleaseListBearerRelCompIEs_t *s1ap_E_RABReleaseListBearerRelCompIEs, + S1ap_E_RABReleaseListBearerRelComp_t *s1ap_E_RABReleaseListBearerRelComp) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABReleaseListBearerRelComp != NULL); + assert(s1ap_E_RABReleaseListBearerRelCompIEs != NULL); + + for (i = 0; i < s1ap_E_RABReleaseListBearerRelComp->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABReleaseListBearerRelComp->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABReleaseItemBearerRelComp: + { + S1ap_E_RABReleaseItemBearerRelComp_t *s1apERABReleaseItemBearerRelComp_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABReleaseItemBearerRelComp, (void**)&s1apERABReleaseItemBearerRelComp_p); + if (tempDecoded < 0 || s1apERABReleaseItemBearerRelComp_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABReleaseItemBearerRelComp for message S1ap_E_RABReleaseListBearerRelComp failed\n"); + if (s1apERABReleaseItemBearerRelComp_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABReleaseItemBearerRelComp, s1apERABReleaseItemBearerRelComp_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABReleaseItemBearerRelComp, s1apERABReleaseItemBearerRelComp_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseListBearerRelCompIEs->s1ap_E_RABReleaseItemBearerRelComp, s1apERABReleaseItemBearerRelComp_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabtobemodifiedlistbearermodreq( + S1ap_E_RABToBeModifiedListBearerModReqIEs_t *s1ap_E_RABToBeModifiedListBearerModReqIEs, + S1ap_E_RABToBeModifiedListBearerModReq_t *s1ap_E_RABToBeModifiedListBearerModReq) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABToBeModifiedListBearerModReq != NULL); + assert(s1ap_E_RABToBeModifiedListBearerModReqIEs != NULL); + + for (i = 0; i < s1ap_E_RABToBeModifiedListBearerModReq->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABToBeModifiedListBearerModReq->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABToBeModifiedItemBearerModReq: + { + S1ap_E_RABToBeModifiedItemBearerModReq_t *s1apERABToBeModifiedItemBearerModReq_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeModifiedItemBearerModReq, (void**)&s1apERABToBeModifiedItemBearerModReq_p); + if (tempDecoded < 0 || s1apERABToBeModifiedItemBearerModReq_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeModifiedItemBearerModReq for message S1ap_E_RABToBeModifiedListBearerModReq failed\n"); + if (s1apERABToBeModifiedItemBearerModReq_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeModifiedItemBearerModReq, s1apERABToBeModifiedItemBearerModReq_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeModifiedItemBearerModReq, s1apERABToBeModifiedItemBearerModReq_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeModifiedListBearerModReqIEs->s1ap_E_RABToBeModifiedItemBearerModReq, s1apERABToBeModifiedItemBearerModReq_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabtobesetuplistbearersureq( + S1ap_E_RABToBeSetupListBearerSUReqIEs_t *s1ap_E_RABToBeSetupListBearerSUReqIEs, + S1ap_E_RABToBeSetupListBearerSUReq_t *s1ap_E_RABToBeSetupListBearerSUReq) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABToBeSetupListBearerSUReq != NULL); + assert(s1ap_E_RABToBeSetupListBearerSUReqIEs != NULL); + + for (i = 0; i < s1ap_E_RABToBeSetupListBearerSUReq->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABToBeSetupListBearerSUReq->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemBearerSUReq: + { + S1ap_E_RABToBeSetupItemBearerSUReq_t *s1apERABToBeSetupItemBearerSUReq_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupItemBearerSUReq, (void**)&s1apERABToBeSetupItemBearerSUReq_p); + if (tempDecoded < 0 || s1apERABToBeSetupItemBearerSUReq_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSetupItemBearerSUReq for message S1ap_E_RABToBeSetupListBearerSUReq failed\n"); + if (s1apERABToBeSetupItemBearerSUReq_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupItemBearerSUReq, s1apERABToBeSetupItemBearerSUReq_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSetupItemBearerSUReq, s1apERABToBeSetupItemBearerSUReq_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSetupListBearerSUReqIEs->s1ap_E_RABToBeSetupItemBearerSUReq, s1apERABToBeSetupItemBearerSUReq_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabsetuplistctxtsures( + S1ap_E_RABSetupListCtxtSUResIEs_t *s1ap_E_RABSetupListCtxtSUResIEs, + S1ap_E_RABSetupListCtxtSURes_t *s1ap_E_RABSetupListCtxtSURes) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABSetupListCtxtSURes != NULL); + assert(s1ap_E_RABSetupListCtxtSUResIEs != NULL); + + for (i = 0; i < s1ap_E_RABSetupListCtxtSURes->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABSetupListCtxtSURes->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABSetupItemCtxtSURes: + { + S1ap_E_RABSetupItemCtxtSURes_t *s1apERABSetupItemCtxtSURes_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSetupItemCtxtSURes, (void**)&s1apERABSetupItemCtxtSURes_p); + if (tempDecoded < 0 || s1apERABSetupItemCtxtSURes_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABSetupItemCtxtSURes for message S1ap_E_RABSetupListCtxtSURes failed\n"); + if (s1apERABSetupItemCtxtSURes_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupItemCtxtSURes, s1apERABSetupItemCtxtSURes_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABSetupItemCtxtSURes, s1apERABSetupItemCtxtSURes_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupListCtxtSUResIEs->s1ap_E_RABSetupItemCtxtSURes, s1apERABSetupItemCtxtSURes_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_bearers_subjecttostatustransfer_list( + S1ap_Bearers_SubjectToStatusTransfer_ListIEs_t *s1ap_Bearers_SubjectToStatusTransfer_ListIEs, + S1ap_Bearers_SubjectToStatusTransfer_List_t *s1ap_Bearers_SubjectToStatusTransfer_List) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_Bearers_SubjectToStatusTransfer_List != NULL); + assert(s1ap_Bearers_SubjectToStatusTransfer_ListIEs != NULL); + + for (i = 0; i < s1ap_Bearers_SubjectToStatusTransfer_List->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_Bearers_SubjectToStatusTransfer_List->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_Bearers_SubjectToStatusTransfer_Item: + { + S1ap_Bearers_SubjectToStatusTransfer_Item_t *s1apBearersSubjectToStatusTransferItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_Bearers_SubjectToStatusTransfer_Item, (void**)&s1apBearersSubjectToStatusTransferItem_p); + if (tempDecoded < 0 || s1apBearersSubjectToStatusTransferItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE bearers_SubjectToStatusTransfer_Item for message S1ap_Bearers_SubjectToStatusTransfer_List failed\n"); + if (s1apBearersSubjectToStatusTransferItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_Bearers_SubjectToStatusTransfer_Item, s1apBearersSubjectToStatusTransferItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_Bearers_SubjectToStatusTransfer_Item, s1apBearersSubjectToStatusTransferItem_p); + ASN_SEQUENCE_ADD(&s1ap_Bearers_SubjectToStatusTransfer_ListIEs->s1ap_Bearers_SubjectToStatusTransfer_Item, s1apBearersSubjectToStatusTransferItem_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rablist( + S1ap_E_RABListIEs_t *s1ap_E_RABListIEs, + S1ap_E_RABList_t *s1ap_E_RABList) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABList != NULL); + assert(s1ap_E_RABListIEs != NULL); + + for (i = 0; i < s1ap_E_RABList->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABList->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABItem: + { + S1ap_E_RABItem_t *s1apERABItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABItem, (void**)&s1apERABItem_p); + if (tempDecoded < 0 || s1apERABItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABItem for message S1ap_E_RABList failed\n"); + if (s1apERABItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABItem, s1apERABItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABItem, s1apERABItem_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABListIEs->s1ap_E_RABItem, s1apERABItem_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_tailist( + S1ap_TAIListIEs_t *s1ap_TAIListIEs, + S1ap_TAIList_t *s1ap_TAIList) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_TAIList != NULL); + assert(s1ap_TAIListIEs != NULL); + + for (i = 0; i < s1ap_TAIList->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_TAIList->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_TAIItem: + { + S1ap_TAIItem_t *s1apTAIItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_TAIItem, (void**)&s1apTAIItem_p); + if (tempDecoded < 0 || s1apTAIItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE taiItem for message S1ap_TAIList failed\n"); + if (s1apTAIItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_TAIItem, s1apTAIItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_TAIItem, s1apTAIItem_p); + ASN_SEQUENCE_ADD(&s1ap_TAIListIEs->s1ap_TAIItem, s1apTAIItem_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_ue_associatedlogicals1_connectionlistres( + S1ap_UE_associatedLogicalS1_ConnectionListResIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResIEs, + S1ap_UE_associatedLogicalS1_ConnectionListRes_t *s1ap_UE_associatedLogicalS1_ConnectionListRes) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_UE_associatedLogicalS1_ConnectionListRes != NULL); + assert(s1ap_UE_associatedLogicalS1_ConnectionListResIEs != NULL); + + for (i = 0; i < s1ap_UE_associatedLogicalS1_ConnectionListRes->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_UE_associatedLogicalS1_ConnectionListRes->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionItem: + { + S1ap_UE_associatedLogicalS1_ConnectionItem_t *s1apUEassociatedLogicalS1ConnectionItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, (void**)&s1apUEassociatedLogicalS1ConnectionItem_p); + if (tempDecoded < 0 || s1apUEassociatedLogicalS1ConnectionItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uE_associatedLogicalS1_ConnectionItem for message S1ap_UE_associatedLogicalS1_ConnectionListRes failed\n"); + if (s1apUEassociatedLogicalS1ConnectionItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, s1apUEassociatedLogicalS1ConnectionItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, s1apUEassociatedLogicalS1ConnectionItem_p); + ASN_SEQUENCE_ADD(&s1ap_UE_associatedLogicalS1_ConnectionListResIEs->s1ap_UE_associatedLogicalS1_ConnectionItemRes, s1apUEassociatedLogicalS1ConnectionItem_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabsetuplistbearersures( + S1ap_E_RABSetupListBearerSUResIEs_t *s1ap_E_RABSetupListBearerSUResIEs, + S1ap_E_RABSetupListBearerSURes_t *s1ap_E_RABSetupListBearerSURes) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABSetupListBearerSURes != NULL); + assert(s1ap_E_RABSetupListBearerSUResIEs != NULL); + + for (i = 0; i < s1ap_E_RABSetupListBearerSURes->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABSetupListBearerSURes->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABSetupItemBearerSURes: + { + S1ap_E_RABSetupItemBearerSURes_t *s1apERABSetupItemBearerSURes_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABSetupItemBearerSURes, (void**)&s1apERABSetupItemBearerSURes_p); + if (tempDecoded < 0 || s1apERABSetupItemBearerSURes_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABSetupItemBearerSURes for message S1ap_E_RABSetupListBearerSURes failed\n"); + if (s1apERABSetupItemBearerSURes_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABSetupItemBearerSURes, s1apERABSetupItemBearerSURes_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABSetupItemBearerSURes, s1apERABSetupItemBearerSURes_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupListBearerSUResIEs->s1ap_E_RABSetupItemBearerSURes, s1apERABSetupItemBearerSURes_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabmodifylistbearermodres( + S1ap_E_RABModifyListBearerModResIEs_t *s1ap_E_RABModifyListBearerModResIEs, + S1ap_E_RABModifyListBearerModRes_t *s1ap_E_RABModifyListBearerModRes) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABModifyListBearerModRes != NULL); + assert(s1ap_E_RABModifyListBearerModResIEs != NULL); + + for (i = 0; i < s1ap_E_RABModifyListBearerModRes->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABModifyListBearerModRes->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABModifyItemBearerModRes: + { + S1ap_E_RABModifyItemBearerModRes_t *s1apERABModifyItemBearerModRes_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABModifyItemBearerModRes, (void**)&s1apERABModifyItemBearerModRes_p); + if (tempDecoded < 0 || s1apERABModifyItemBearerModRes_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABModifyItemBearerModRes for message S1ap_E_RABModifyListBearerModRes failed\n"); + if (s1apERABModifyItemBearerModRes_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABModifyItemBearerModRes, s1apERABModifyItemBearerModRes_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABModifyItemBearerModRes, s1apERABModifyItemBearerModRes_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyListBearerModResIEs->s1ap_E_RABModifyItemBearerModRes, s1apERABModifyItemBearerModRes_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabtobesetuplistctxtsureq( + S1ap_E_RABToBeSetupListCtxtSUReqIEs_t *s1ap_E_RABToBeSetupListCtxtSUReqIEs, + S1ap_E_RABToBeSetupListCtxtSUReq_t *s1ap_E_RABToBeSetupListCtxtSUReq) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABToBeSetupListCtxtSUReq != NULL); + assert(s1ap_E_RABToBeSetupListCtxtSUReqIEs != NULL); + + for (i = 0; i < s1ap_E_RABToBeSetupListCtxtSUReq->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABToBeSetupListCtxtSUReq->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemCtxtSUReq: + { + S1ap_E_RABToBeSetupItemCtxtSUReq_t *s1apERABToBeSetupItemCtxtSUReq_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABToBeSetupItemCtxtSUReq, (void**)&s1apERABToBeSetupItemCtxtSUReq_p); + if (tempDecoded < 0 || s1apERABToBeSetupItemCtxtSUReq_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABToBeSetupItemCtxtSUReq for message S1ap_E_RABToBeSetupListCtxtSUReq failed\n"); + if (s1apERABToBeSetupItemCtxtSUReq_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABToBeSetupItemCtxtSUReq, s1apERABToBeSetupItemCtxtSUReq_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABToBeSetupItemCtxtSUReq, s1apERABToBeSetupItemCtxtSUReq_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSetupListCtxtSUReqIEs->s1ap_E_RABToBeSetupItemCtxtSUReq, s1apERABToBeSetupItemCtxtSUReq_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_e_rabinformationlist( + S1ap_E_RABInformationListIEs_t *s1ap_E_RABInformationListIEs, + S1ap_E_RABInformationList_t *s1ap_E_RABInformationList) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_E_RABInformationList != NULL); + assert(s1ap_E_RABInformationListIEs != NULL); + + for (i = 0; i < s1ap_E_RABInformationList->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_E_RABInformationList->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_E_RABInformationListItem: + { + S1ap_E_RABInformationListItem_t *s1apERABInformationListItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_E_RABInformationListItem, (void**)&s1apERABInformationListItem_p); + if (tempDecoded < 0 || s1apERABInformationListItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE e_RABInformationListItem for message S1ap_E_RABInformationList failed\n"); + if (s1apERABInformationListItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_E_RABInformationListItem, s1apERABInformationListItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_E_RABInformationListItem, s1apERABInformationListItem_p); + ASN_SEQUENCE_ADD(&s1ap_E_RABInformationListIEs->s1ap_E_RABInformationList, s1apERABInformationListItem_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + +int s1ap_decode_s1ap_ue_associatedlogicals1_connectionlistresack( + S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs, + S1ap_UE_associatedLogicalS1_ConnectionListResAck_t *s1ap_UE_associatedLogicalS1_ConnectionListResAck) { + + int i, decoded = 0; + int tempDecoded = 0; + + assert(s1ap_UE_associatedLogicalS1_ConnectionListResAck != NULL); + assert(s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs != NULL); + + for (i = 0; i < s1ap_UE_associatedLogicalS1_ConnectionListResAck->list.count; i++) { + S1ap_IE_t *ie_p = s1ap_UE_associatedLogicalS1_ConnectionListResAck->list.array[i]; + switch (ie_p->id) { + case S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionItem: + { + S1ap_UE_associatedLogicalS1_ConnectionItem_t *s1apUEassociatedLogicalS1ConnectionItem_p = NULL; + tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, (void**)&s1apUEassociatedLogicalS1ConnectionItem_p); + if (tempDecoded < 0 || s1apUEassociatedLogicalS1ConnectionItem_p == NULL) { + OAILOG_ERROR (LOG_S1AP, "Decoding of IE uE_associatedLogicalS1_ConnectionItem for message S1ap_UE_associatedLogicalS1_ConnectionListResAck failed\n"); + if (s1apUEassociatedLogicalS1ConnectionItem_p) + ASN_STRUCT_FREE(asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, s1apUEassociatedLogicalS1ConnectionItem_p); + return -1; + } + decoded += tempDecoded; + if (asn1_xer_print) + xer_fprint(stdout, &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, s1apUEassociatedLogicalS1ConnectionItem_p); + ASN_SEQUENCE_ADD(&s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs->s1ap_UE_associatedLogicalS1_ConnectionItemResAck, s1apUEassociatedLogicalS1ConnectionItem_p); + } break; + default: + OAILOG_ERROR (LOG_S1AP, "Unknown protocol IE id (%d) for message s1ap_uplinkueassociatedlppatransport_ies\n", (int)ie_p->id); + return -1; + } + } + return decoded; +} + diff --git a/lib/asn/s1ap_encoder.c b/lib/asn/s1ap_encoder.c new file mode 100644 index 0000000000..139b0ba538 --- /dev/null +++ b/lib/asn/s1ap_encoder.c @@ -0,0 +1,4384 @@ +/* + * Copyright (c) 2015, EURECOM (www.eurecom.fr) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those + * of the authors and should not be interpreted as representing official policies, + * either expressed or implied, of the FreeBSD Project. + */ + +/******************************************************************************* + * This file had been created by asn1tostruct.py script v1.0.2 + * Please do not modify this file but regenerate it via script. + * Created on: 2017-02-02 21:30:57.642219 by acetcom + * from ['S1AP-PDU.asn'] + ******************************************************************************/ +#include "s1ap_common.h" +#include "s1ap_ies_defs.h" + +int s1ap_encode_s1ap_e_rabfailedtosetupitemhoreqackies( + S1ap_E_RABFailedtoSetupListHOReqAck_t *s1ap_E_RABFailedtoSetupListHOReqAck, + S1ap_E_RABFailedtoSetupItemHOReqAckIEs_t *s1ap_E_RABFailedtoSetupItemHOReqAckIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABFailedtoSetupListHOReqAck != NULL); + assert(s1ap_E_RABFailedtoSetupItemHOReqAckIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABFailedtoSetupItemHOReqAck, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABFailedToSetupItemHOReqAck, + &s1ap_E_RABFailedtoSetupItemHOReqAckIEs->e_RABFailedtoSetupItemHOReqAck)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABFailedtoSetupListHOReqAck->s1ap_E_RABFailedtoSetupListHOReqAck_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_deactivatetraceies( + S1ap_DeactivateTrace_t *s1ap_DeactivateTrace, + S1ap_DeactivateTraceIEs_t *s1ap_DeactivateTraceIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_DeactivateTrace != NULL); + assert(s1ap_DeactivateTraceIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_DeactivateTraceIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DeactivateTrace->s1ap_DeactivateTrace_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_DeactivateTraceIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DeactivateTrace->s1ap_DeactivateTrace_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_UTRAN_Trace_ID, + &s1ap_DeactivateTraceIEs->e_UTRAN_Trace_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DeactivateTrace->s1ap_DeactivateTrace_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_enbdirectinformationtransferies( + S1ap_ENBDirectInformationTransfer_t *s1ap_ENBDirectInformationTransfer, + S1ap_ENBDirectInformationTransferIEs_t *s1ap_ENBDirectInformationTransferIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_ENBDirectInformationTransfer != NULL); + assert(s1ap_ENBDirectInformationTransferIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Inter_SystemInformationTransferTypeEDT, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Inter_SystemInformationTransferType, + &s1ap_ENBDirectInformationTransferIEs->inter_SystemInformationTransferTypeEDT)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBDirectInformationTransfer->s1ap_ENBDirectInformationTransfer_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_e_rabreleaseresponseies( + S1ap_E_RABReleaseResponse_t *s1ap_E_RABReleaseResponse, + S1ap_E_RABReleaseResponseIEs_t *s1ap_E_RABReleaseResponseIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABReleaseResponse != NULL); + assert(s1ap_E_RABReleaseResponseIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_E_RABReleaseResponseIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseResponse->s1ap_E_RABReleaseResponse_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_E_RABReleaseResponseIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseResponse->s1ap_E_RABReleaseResponse_ies.list, ie); + + /* Optional field */ + if (s1ap_E_RABReleaseResponseIEs->presenceMask & S1AP_E_RABRELEASERESPONSEIES_E_RABRELEASELISTBEARERRELCOMP_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABReleaseListBearerRelComp, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABReleaseListBearerRelComp, + &s1ap_E_RABReleaseResponseIEs->e_RABReleaseListBearerRelComp)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseResponse->s1ap_E_RABReleaseResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_E_RABReleaseResponseIEs->presenceMask & S1AP_E_RABRELEASERESPONSEIES_E_RABFAILEDTORELEASELIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABFailedToReleaseList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABList, + &s1ap_E_RABReleaseResponseIEs->e_RABFailedToReleaseList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseResponse->s1ap_E_RABReleaseResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_E_RABReleaseResponseIEs->presenceMask & S1AP_E_RABRELEASERESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_E_RABReleaseResponseIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseResponse->s1ap_E_RABReleaseResponse_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_uplinknonueassociatedlppatransport_ies( + S1ap_UplinkNonUEAssociatedLPPaTransport_t *s1ap_UplinkNonUEAssociatedLPPaTransport, + S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkNonUEAssociatedLPPaTransport_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UplinkNonUEAssociatedLPPaTransport != NULL); + assert(s1ap_UplinkNonUEAssociatedLPPaTransport_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Routing_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Routing_ID, + &s1ap_UplinkNonUEAssociatedLPPaTransport_IEs->routing_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkNonUEAssociatedLPPaTransport->s1ap_UplinkNonUEAssociatedLPPaTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_LPPa_PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_LPPa_PDU, + &s1ap_UplinkNonUEAssociatedLPPaTransport_IEs->lpPa_PDU)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkNonUEAssociatedLPPaTransport->s1ap_UplinkNonUEAssociatedLPPaTransport_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_e_rabtobesetupitemhoreqies( + S1ap_E_RABToBeSetupListHOReq_t *s1ap_E_RABToBeSetupListHOReq, + S1ap_E_RABToBeSetupItemHOReqIEs_t *s1ap_E_RABToBeSetupItemHOReqIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABToBeSetupListHOReq != NULL); + assert(s1ap_E_RABToBeSetupItemHOReqIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemHOReq, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeSetupItemHOReq, + &s1ap_E_RABToBeSetupItemHOReqIEs->e_RABToBeSetupItemHOReq)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSetupListHOReq->s1ap_E_RABToBeSetupListHOReq_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_tracestarties( + S1ap_TraceStart_t *s1ap_TraceStart, + S1ap_TraceStartIEs_t *s1ap_TraceStartIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_TraceStart != NULL); + assert(s1ap_TraceStartIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_TraceStartIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_TraceStart->s1ap_TraceStart_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_TraceStartIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_TraceStart->s1ap_TraceStart_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TraceActivation, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TraceActivation, + &s1ap_TraceStartIEs->traceActivation)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_TraceStart->s1ap_TraceStart_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_writereplacewarningresponseies( + S1ap_WriteReplaceWarningResponse_t *s1ap_WriteReplaceWarningResponse, + S1ap_WriteReplaceWarningResponseIEs_t *s1ap_WriteReplaceWarningResponseIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_WriteReplaceWarningResponse != NULL); + assert(s1ap_WriteReplaceWarningResponseIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MessageIdentifier, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MessageIdentifier, + &s1ap_WriteReplaceWarningResponseIEs->messageIdentifier)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningResponse->s1ap_WriteReplaceWarningResponse_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SerialNumber, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SerialNumber, + &s1ap_WriteReplaceWarningResponseIEs->serialNumber)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningResponse->s1ap_WriteReplaceWarningResponse_ies.list, ie); + + /* Optional field */ + if (s1ap_WriteReplaceWarningResponseIEs->presenceMask & S1AP_WRITEREPLACEWARNINGRESPONSEIES_BROADCASTCOMPLETEDAREALIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_BroadcastCompletedAreaList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_BroadcastCompletedAreaList, + &s1ap_WriteReplaceWarningResponseIEs->broadcastCompletedAreaList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningResponse->s1ap_WriteReplaceWarningResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_WriteReplaceWarningResponseIEs->presenceMask & S1AP_WRITEREPLACEWARNINGRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_WriteReplaceWarningResponseIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningResponse->s1ap_WriteReplaceWarningResponse_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_handovercancelies( + S1ap_HandoverCancel_t *s1ap_HandoverCancel, + S1ap_HandoverCancelIEs_t *s1ap_HandoverCancelIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverCancel != NULL); + assert(s1ap_HandoverCancelIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverCancelIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCancel->s1ap_HandoverCancel_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_HandoverCancelIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCancel->s1ap_HandoverCancel_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_HandoverCancelIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCancel->s1ap_HandoverCancel_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_handoverpreparationfailureies( + S1ap_HandoverPreparationFailure_t *s1ap_HandoverPreparationFailure, + S1ap_HandoverPreparationFailureIEs_t *s1ap_HandoverPreparationFailureIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverPreparationFailure != NULL); + assert(s1ap_HandoverPreparationFailureIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverPreparationFailureIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverPreparationFailure->s1ap_HandoverPreparationFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_HandoverPreparationFailureIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverPreparationFailure->s1ap_HandoverPreparationFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_HandoverPreparationFailureIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverPreparationFailure->s1ap_HandoverPreparationFailure_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverPreparationFailureIEs->presenceMask & S1AP_HANDOVERPREPARATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_HandoverPreparationFailureIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverPreparationFailure->s1ap_HandoverPreparationFailure_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_uecontextreleaserequest_ies( + S1ap_UEContextReleaseRequest_t *s1ap_UEContextReleaseRequest, + S1ap_UEContextReleaseRequest_IEs_t *s1ap_UEContextReleaseRequest_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UEContextReleaseRequest != NULL); + assert(s1ap_UEContextReleaseRequest_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UEContextReleaseRequest_IEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseRequest->s1ap_UEContextReleaseRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UEContextReleaseRequest_IEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseRequest->s1ap_UEContextReleaseRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_UEContextReleaseRequest_IEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseRequest->s1ap_UEContextReleaseRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_UEContextReleaseRequest_IEs->presenceMask & S1AP_UECONTEXTRELEASEREQUEST_IES_GWCONTEXTRELEASEINDICATION_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_GWContextReleaseIndication, + S1ap_Criticality_reject, + &asn_DEF_S1ap_GWContextReleaseIndication, + &s1ap_UEContextReleaseRequest_IEs->gwContextReleaseIndication)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseRequest->s1ap_UEContextReleaseRequest_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_e_rabadmitteditemies( + S1ap_E_RABAdmittedList_t *s1ap_E_RABAdmittedList, + S1ap_E_RABAdmittedItemIEs_t *s1ap_E_RABAdmittedItemIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABAdmittedList != NULL); + assert(s1ap_E_RABAdmittedItemIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABAdmittedItem, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABAdmittedItem, + &s1ap_E_RABAdmittedItemIEs->e_RABAdmittedItem)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABAdmittedList->s1ap_E_RABAdmittedList_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_initialuemessage_ies( + S1ap_InitialUEMessage_t *s1ap_InitialUEMessage, + S1ap_InitialUEMessage_IEs_t *s1ap_InitialUEMessage_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_InitialUEMessage != NULL); + assert(s1ap_InitialUEMessage_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_InitialUEMessage_IEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_NAS_PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_NAS_PDU, + &s1ap_InitialUEMessage_IEs->nas_pdu)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TAI, + S1ap_Criticality_reject, + &asn_DEF_S1ap_TAI, + &s1ap_InitialUEMessage_IEs->tai)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_EUTRAN_CGI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_EUTRAN_CGI, + &s1ap_InitialUEMessage_IEs->eutran_cgi)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RRC_Establishment_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_RRC_Establishment_Cause, + &s1ap_InitialUEMessage_IEs->rrC_Establishment_Cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_S_TMSI_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_S_TMSI, + S1ap_Criticality_reject, + &asn_DEF_S1ap_S_TMSI, + &s1ap_InitialUEMessage_IEs->s_tmsi)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_CSG_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSG_Id, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CSG_Id, + &s1ap_InitialUEMessage_IEs->csG_Id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_GUMMEI_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_GUMMEI_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_GUMMEI, + &s1ap_InitialUEMessage_IEs->gummei_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_CELLACCESSMODE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CellAccessMode, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CellAccessMode, + &s1ap_InitialUEMessage_IEs->cellAccessMode)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_GW_S1AP_TRANSPORTLAYERADDRESS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_GW_S1ap_TransportLayerAddress, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TransportLayerAddress, + &s1ap_InitialUEMessage_IEs->gW_S1ap_TransportLayerAddress)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_RELAYNODE_INDICATOR_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RelayNode_Indicator, + S1ap_Criticality_reject, + &asn_DEF_S1ap_RelayNode_Indicator, + &s1ap_InitialUEMessage_IEs->relayNode_Indicator)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialUEMessage->s1ap_InitialUEMessage_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_killrequesties( + S1ap_KillRequest_t *s1ap_KillRequest, + S1ap_KillRequestIEs_t *s1ap_KillRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_KillRequest != NULL); + assert(s1ap_KillRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MessageIdentifier, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MessageIdentifier, + &s1ap_KillRequestIEs->messageIdentifier)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_KillRequest->s1ap_KillRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SerialNumber, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SerialNumber, + &s1ap_KillRequestIEs->serialNumber)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_KillRequest->s1ap_KillRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_KillRequestIEs->presenceMask & S1AP_KILLREQUESTIES_WARNINGAREALIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_WarningAreaList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_WarningAreaList, + &s1ap_KillRequestIEs->warningAreaList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_KillRequest->s1ap_KillRequest_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_writereplacewarningrequesties( + S1ap_WriteReplaceWarningRequest_t *s1ap_WriteReplaceWarningRequest, + S1ap_WriteReplaceWarningRequestIEs_t *s1ap_WriteReplaceWarningRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_WriteReplaceWarningRequest != NULL); + assert(s1ap_WriteReplaceWarningRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MessageIdentifier, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MessageIdentifier, + &s1ap_WriteReplaceWarningRequestIEs->messageIdentifier)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SerialNumber, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SerialNumber, + &s1ap_WriteReplaceWarningRequestIEs->serialNumber)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGAREALIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_WarningAreaList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_WarningAreaList, + &s1ap_WriteReplaceWarningRequestIEs->warningAreaList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RepetitionPeriod, + S1ap_Criticality_reject, + &asn_DEF_S1ap_RepetitionPeriod, + &s1ap_WriteReplaceWarningRequestIEs->repetitionPeriod)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_EXTENDEDREPETITIONPERIOD_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_ExtendedRepetitionPeriod, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ExtendedRepetitionPeriod, + &s1ap_WriteReplaceWarningRequestIEs->extendedRepetitionPeriod)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_NumberofBroadcastRequest, + S1ap_Criticality_reject, + &asn_DEF_S1ap_NumberofBroadcastRequest, + &s1ap_WriteReplaceWarningRequestIEs->numberofBroadcastRequest)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGTYPE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_WarningType, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_WarningType, + &s1ap_WriteReplaceWarningRequestIEs->warningType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGSECURITYINFO_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_WarningSecurityInfo, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_WarningSecurityInfo, + &s1ap_WriteReplaceWarningRequestIEs->warningSecurityInfo)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_DATACODINGSCHEME_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_DataCodingScheme, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_DataCodingScheme, + &s1ap_WriteReplaceWarningRequestIEs->dataCodingScheme)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGMESSAGECONTENTS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_WarningMessageContents, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_WarningMessageContents, + &s1ap_WriteReplaceWarningRequestIEs->warningMessageContents)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_CONCURRENTWARNINGMESSAGEINDICATOR_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_ConcurrentWarningMessageIndicator, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ConcurrentWarningMessageIndicator, + &s1ap_WriteReplaceWarningRequestIEs->concurrentWarningMessageIndicator)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_WriteReplaceWarningRequest->s1ap_WriteReplaceWarningRequest_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_uecapabilityinfoindicationies( + S1ap_UECapabilityInfoIndication_t *s1ap_UECapabilityInfoIndication, + S1ap_UECapabilityInfoIndicationIEs_t *s1ap_UECapabilityInfoIndicationIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UECapabilityInfoIndication != NULL); + assert(s1ap_UECapabilityInfoIndicationIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UECapabilityInfoIndicationIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UECapabilityInfoIndication->s1ap_UECapabilityInfoIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UECapabilityInfoIndicationIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UECapabilityInfoIndication->s1ap_UECapabilityInfoIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UERadioCapability, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UERadioCapability, + &s1ap_UECapabilityInfoIndicationIEs->ueRadioCapability)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UECapabilityInfoIndication->s1ap_UECapabilityInfoIndication_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_e_rabdataforwardingitemies( + S1ap_E_RABDataForwardingList_t *s1ap_E_RABDataForwardingList, + S1ap_E_RABDataForwardingItemIEs_t *s1ap_E_RABDataForwardingItemIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABDataForwardingList != NULL); + assert(s1ap_E_RABDataForwardingItemIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABDataForwardingItem, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABDataForwardingItem, + &s1ap_E_RABDataForwardingItemIEs->e_RABDataForwardingItem)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABDataForwardingList->s1ap_E_RABDataForwardingList_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_locationreportingfailureindicationies( + S1ap_LocationReportingFailureIndication_t *s1ap_LocationReportingFailureIndication, + S1ap_LocationReportingFailureIndicationIEs_t *s1ap_LocationReportingFailureIndicationIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_LocationReportingFailureIndication != NULL); + assert(s1ap_LocationReportingFailureIndicationIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_LocationReportingFailureIndicationIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReportingFailureIndication->s1ap_LocationReportingFailureIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_LocationReportingFailureIndicationIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReportingFailureIndication->s1ap_LocationReportingFailureIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_LocationReportingFailureIndicationIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReportingFailureIndication->s1ap_LocationReportingFailureIndication_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_initialcontextsetuprequesties( + S1ap_InitialContextSetupRequest_t *s1ap_InitialContextSetupRequest, + S1ap_InitialContextSetupRequestIEs_t *s1ap_InitialContextSetupRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_InitialContextSetupRequest != NULL); + assert(s1ap_InitialContextSetupRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_InitialContextSetupRequestIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_InitialContextSetupRequestIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UEAggregateMaximumBitrate, + &s1ap_InitialContextSetupRequestIEs->uEaggregateMaximumBitrate)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + + S1ap_E_RABToBeSetupListCtxtSUReq_t e_RABToBeSetupListCtxtSUReq; + + memset(&e_RABToBeSetupListCtxtSUReq, 0, sizeof(S1ap_E_RABToBeSetupListCtxtSUReq_t)); + + if (s1ap_encode_s1ap_e_rabtobesetuplistctxtsureq(&e_RABToBeSetupListCtxtSUReq, &s1ap_InitialContextSetupRequestIEs->e_RABToBeSetupListCtxtSUReq) < 0) return -1; + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSetupListCtxtSUReq, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, + &e_RABToBeSetupListCtxtSUReq)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + + /* Free any dynamic allocation that is no more used */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABToBeSetupListCtxtSUReq, &e_RABToBeSetupListCtxtSUReq); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UESecurityCapabilities, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UESecurityCapabilities, + &s1ap_InitialContextSetupRequestIEs->ueSecurityCapabilities)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SecurityKey, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SecurityKey, + &s1ap_InitialContextSetupRequestIEs->securityKey)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_TRACEACTIVATION_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TraceActivation, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TraceActivation, + &s1ap_InitialContextSetupRequestIEs->traceActivation)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_HandoverRestrictionList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_HandoverRestrictionList, + &s1ap_InitialContextSetupRequestIEs->handoverRestrictionList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_UERADIOCAPABILITY_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UERadioCapability, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UERadioCapability, + &s1ap_InitialContextSetupRequestIEs->ueRadioCapability)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_SubscriberProfileIDforRFP, + &s1ap_InitialContextSetupRequestIEs->subscriberProfileIDforRFP)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_CSFALLBACKINDICATOR_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSFallbackIndicator, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CSFallbackIndicator, + &s1ap_InitialContextSetupRequestIEs->csFallbackIndicator)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SRVCCOperationPossible, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_SRVCCOperationPossible, + &s1ap_InitialContextSetupRequestIEs->srvccOperationPossible)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSGMembershipStatus, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CSGMembershipStatus, + &s1ap_InitialContextSetupRequestIEs->csgMembershipStatus)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_REGISTEREDLAI_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RegisteredLAI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_LAI, + &s1ap_InitialContextSetupRequestIEs->registeredLAI)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_GUMMEI_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_GUMMEI_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_GUMMEI, + &s1ap_InitialContextSetupRequestIEs->gummei_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_MME_UE_S1AP_ID_2_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_InitialContextSetupRequestIEs->mme_ue_s1ap_id_2)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_ManagementBasedMDTAllowed, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ManagementBasedMDTAllowed, + &s1ap_InitialContextSetupRequestIEs->managementBasedMDTAllowed)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupRequest->s1ap_InitialContextSetupRequest_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_locationreporties( + S1ap_LocationReport_t *s1ap_LocationReport, + S1ap_LocationReportIEs_t *s1ap_LocationReportIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_LocationReport != NULL); + assert(s1ap_LocationReportIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_LocationReportIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReport->s1ap_LocationReport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_LocationReportIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReport->s1ap_LocationReport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_EUTRAN_CGI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_EUTRAN_CGI, + &s1ap_LocationReportIEs->eutran_cgi)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReport->s1ap_LocationReport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TAI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TAI, + &s1ap_LocationReportIEs->tai)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReport->s1ap_LocationReport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RequestType, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_RequestType, + &s1ap_LocationReportIEs->requestType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReport->s1ap_LocationReport_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_uplinknastransport_ies( + S1ap_UplinkNASTransport_t *s1ap_UplinkNASTransport, + S1ap_UplinkNASTransport_IEs_t *s1ap_UplinkNASTransport_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UplinkNASTransport != NULL); + assert(s1ap_UplinkNASTransport_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UplinkNASTransport_IEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkNASTransport->s1ap_UplinkNASTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UplinkNASTransport_IEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkNASTransport->s1ap_UplinkNASTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_NAS_PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_NAS_PDU, + &s1ap_UplinkNASTransport_IEs->nas_pdu)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkNASTransport->s1ap_UplinkNASTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_EUTRAN_CGI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_EUTRAN_CGI, + &s1ap_UplinkNASTransport_IEs->eutran_cgi)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkNASTransport->s1ap_UplinkNASTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TAI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TAI, + &s1ap_UplinkNASTransport_IEs->tai)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkNASTransport->s1ap_UplinkNASTransport_ies.list, ie); + + /* Optional field */ + if (s1ap_UplinkNASTransport_IEs->presenceMask & S1AP_UPLINKNASTRANSPORT_IES_GW_S1AP_TRANSPORTLAYERADDRESS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_GW_S1ap_TransportLayerAddress, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TransportLayerAddress, + &s1ap_UplinkNASTransport_IEs->gW_S1ap_TransportLayerAddress)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkNASTransport->s1ap_UplinkNASTransport_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_uecontextmodificationresponseies( + S1ap_UEContextModificationResponse_t *s1ap_UEContextModificationResponse, + S1ap_UEContextModificationResponseIEs_t *s1ap_UEContextModificationResponseIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UEContextModificationResponse != NULL); + assert(s1ap_UEContextModificationResponseIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UEContextModificationResponseIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationResponse->s1ap_UEContextModificationResponse_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UEContextModificationResponseIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationResponse->s1ap_UEContextModificationResponse_ies.list, ie); + + /* Optional field */ + if (s1ap_UEContextModificationResponseIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_UEContextModificationResponseIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationResponse->s1ap_UEContextModificationResponse_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_uecontextmodificationrequesties( + S1ap_UEContextModificationRequest_t *s1ap_UEContextModificationRequest, + S1ap_UEContextModificationRequestIEs_t *s1ap_UEContextModificationRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UEContextModificationRequest != NULL); + assert(s1ap_UEContextModificationRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UEContextModificationRequestIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UEContextModificationRequestIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_SECURITYKEY_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SecurityKey, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SecurityKey, + &s1ap_UEContextModificationRequestIEs->securityKey)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_SubscriberProfileIDforRFP, + &s1ap_UEContextModificationRequestIEs->subscriberProfileIDforRFP)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UEAggregateMaximumBitrate, + &s1ap_UEContextModificationRequestIEs->uEaggregateMaximumBitrate)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSFALLBACKINDICATOR_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSFallbackIndicator, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CSFallbackIndicator, + &s1ap_UEContextModificationRequestIEs->csFallbackIndicator)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_UESECURITYCAPABILITIES_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UESecurityCapabilities, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UESecurityCapabilities, + &s1ap_UEContextModificationRequestIEs->ueSecurityCapabilities)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSGMembershipStatus, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CSGMembershipStatus, + &s1ap_UEContextModificationRequestIEs->csgMembershipStatus)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_REGISTEREDLAI_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RegisteredLAI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_LAI, + &s1ap_UEContextModificationRequestIEs->registeredLAI)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationRequest->s1ap_UEContextModificationRequest_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_locationreportingcontrolies( + S1ap_LocationReportingControl_t *s1ap_LocationReportingControl, + S1ap_LocationReportingControlIEs_t *s1ap_LocationReportingControlIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_LocationReportingControl != NULL); + assert(s1ap_LocationReportingControlIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_LocationReportingControlIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReportingControl->s1ap_LocationReportingControl_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_LocationReportingControlIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReportingControl->s1ap_LocationReportingControl_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RequestType, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_RequestType, + &s1ap_LocationReportingControlIEs->requestType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_LocationReportingControl->s1ap_LocationReportingControl_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_uplinks1cdma2000tunnelingies( + S1ap_UplinkS1cdma2000tunneling_t *s1ap_UplinkS1cdma2000tunneling, + S1ap_UplinkS1cdma2000tunnelingIEs_t *s1ap_UplinkS1cdma2000tunnelingIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UplinkS1cdma2000tunneling != NULL); + assert(s1ap_UplinkS1cdma2000tunnelingIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UplinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UplinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000RATType, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Cdma2000RATType, + &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000RATType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000SectorID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Cdma2000SectorID, + &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000SectorID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + + /* Optional field */ + if (s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask & S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000HOREQUIREDINDICATION_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000HORequiredIndication, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cdma2000HORequiredIndication, + &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000HORequiredIndication)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + } + + /* Optional field */ + if (s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask & S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXSRVCCINFO_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000OneXSRVCCInfo, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Cdma2000OneXSRVCCInfo, + &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000OneXSRVCCInfo)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + } + + /* Optional field */ + if (s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask & S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXRAND_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000OneXRAND, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Cdma2000OneXRAND, + &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000OneXRAND)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Cdma2000PDU, + &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000PDU)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + + /* Optional field */ + if (s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask & S1AP_UPLINKS1CDMA2000TUNNELINGIES_EUTRANROUNDTRIPDELAYESTIMATIONINFO_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_EUTRANRoundTripDelayEstimationInfo, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_EUTRANRoundTripDelayEstimationInfo, + &s1ap_UplinkS1cdma2000tunnelingIEs->eutranRoundTripDelayEstimationInfo)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkS1cdma2000tunneling->s1ap_UplinkS1cdma2000tunneling_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_handoverrequesties( + S1ap_HandoverRequest_t *s1ap_HandoverRequest, + S1ap_HandoverRequestIEs_t *s1ap_HandoverRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverRequest != NULL); + assert(s1ap_HandoverRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverRequestIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_HandoverType, + S1ap_Criticality_reject, + &asn_DEF_S1ap_HandoverType, + &s1ap_HandoverRequestIEs->handoverType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_HandoverRequestIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UEAggregateMaximumBitrate, + &s1ap_HandoverRequestIEs->uEaggregateMaximumBitrate)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSetupListHOReq, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeSetupListHOReq, + &s1ap_HandoverRequestIEs->e_RABToBeSetupListHOReq)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, + &s1ap_HandoverRequestIEs->source_ToTarget_TransparentContainer)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UESecurityCapabilities, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UESecurityCapabilities, + &s1ap_HandoverRequestIEs->ueSecurityCapabilities)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_HandoverRestrictionList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_HandoverRestrictionList, + &s1ap_HandoverRequestIEs->handoverRestrictionList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_TRACEACTIVATION_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TraceActivation, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TraceActivation, + &s1ap_HandoverRequestIEs->traceActivation)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_REQUESTTYPE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RequestType, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_RequestType, + &s1ap_HandoverRequestIEs->requestType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SRVCCOperationPossible, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_SRVCCOperationPossible, + &s1ap_HandoverRequestIEs->srvccOperationPossible)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SecurityContext, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SecurityContext, + &s1ap_HandoverRequestIEs->securityContext)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_CSG_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSG_Id, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CSG_Id, + &s1ap_HandoverRequestIEs->csG_Id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSGMembershipStatus, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CSGMembershipStatus, + &s1ap_HandoverRequestIEs->csgMembershipStatus)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_GUMMEI_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_GUMMEI_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_GUMMEI, + &s1ap_HandoverRequestIEs->gummei_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_MME_UE_S1AP_ID_2_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverRequestIEs->mme_ue_s1ap_id_2)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_ManagementBasedMDTAllowed, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ManagementBasedMDTAllowed, + &s1ap_HandoverRequestIEs->managementBasedMDTAllowed)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequest->s1ap_HandoverRequest_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_handoverrequiredies( + S1ap_HandoverRequired_t *s1ap_HandoverRequired, + S1ap_HandoverRequiredIEs_t *s1ap_HandoverRequiredIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverRequired != NULL); + assert(s1ap_HandoverRequiredIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverRequiredIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_HandoverRequiredIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_HandoverType, + S1ap_Criticality_reject, + &asn_DEF_S1ap_HandoverType, + &s1ap_HandoverRequiredIEs->handoverType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_HandoverRequiredIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TargetID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_TargetID, + &s1ap_HandoverRequiredIEs->targetID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Direct_Forwarding_Path_Availability, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Direct_Forwarding_Path_Availability, + &s1ap_HandoverRequiredIEs->direct_Forwarding_Path_Availability)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_SRVCCHOINDICATION_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SRVCCHOIndication, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SRVCCHOIndication, + &s1ap_HandoverRequiredIEs->srvcchoIndication)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, + &s1ap_HandoverRequiredIEs->source_ToTarget_TransparentContainer)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_SOURCE_TOTARGET_TRANSPARENTCONTAINER_SECONDARY_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer_Secondary, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Source_ToTarget_TransparentContainer, + &s1ap_HandoverRequiredIEs->source_ToTarget_TransparentContainer_Secondary)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + } + + /* Conditional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_MSCLASSMARK2_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MSClassmark2, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MSClassmark2, + &s1ap_HandoverRequiredIEs->msClassmark2)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + } + + /* Conditional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_MSCLASSMARK3_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MSClassmark3, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MSClassmark3, + &s1ap_HandoverRequiredIEs->msClassmark3)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_CSG_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSG_Id, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CSG_Id, + &s1ap_HandoverRequiredIEs->csG_Id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_CELLACCESSMODE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CellAccessMode, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CellAccessMode, + &s1ap_HandoverRequiredIEs->cellAccessMode)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_PS_SERVICENOTAVAILABLE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_PS_ServiceNotAvailable, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_PS_ServiceNotAvailable, + &s1ap_HandoverRequiredIEs->pS_ServiceNotAvailable)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequired->s1ap_HandoverRequired_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_e_rabtobeswitcheddlitemies( + S1ap_E_RABToBeSwitchedDLList_t *s1ap_E_RABToBeSwitchedDLList, + S1ap_E_RABToBeSwitchedDLItemIEs_t *s1ap_E_RABToBeSwitchedDLItemIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABToBeSwitchedDLList != NULL); + assert(s1ap_E_RABToBeSwitchedDLItemIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedDLItem, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeSwitchedDLItem, + &s1ap_E_RABToBeSwitchedDLItemIEs->e_RABToBeSwitchedDLItem)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSwitchedDLList->s1ap_E_RABToBeSwitchedDLList_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_mmeconfigurationupdateacknowledgeies( + S1ap_MMEConfigurationUpdateAcknowledge_t *s1ap_MMEConfigurationUpdateAcknowledge, + S1ap_MMEConfigurationUpdateAcknowledgeIEs_t *s1ap_MMEConfigurationUpdateAcknowledgeIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_MMEConfigurationUpdateAcknowledge != NULL); + assert(s1ap_MMEConfigurationUpdateAcknowledgeIEs != NULL); + + /* Optional field */ + if (s1ap_MMEConfigurationUpdateAcknowledgeIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_MMEConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEConfigurationUpdateAcknowledge->s1ap_MMEConfigurationUpdateAcknowledge_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_killresponseies( + S1ap_KillResponse_t *s1ap_KillResponse, + S1ap_KillResponseIEs_t *s1ap_KillResponseIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_KillResponse != NULL); + assert(s1ap_KillResponseIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MessageIdentifier, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MessageIdentifier, + &s1ap_KillResponseIEs->messageIdentifier)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_KillResponse->s1ap_KillResponse_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SerialNumber, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SerialNumber, + &s1ap_KillResponseIEs->serialNumber)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_KillResponse->s1ap_KillResponse_ies.list, ie); + + /* Optional field */ + if (s1ap_KillResponseIEs->presenceMask & S1AP_KILLRESPONSEIES_BROADCASTCANCELLEDAREALIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_BroadcastCancelledAreaList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_BroadcastCancelledAreaList, + &s1ap_KillResponseIEs->broadcastCancelledAreaList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_KillResponse->s1ap_KillResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_KillResponseIEs->presenceMask & S1AP_KILLRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_KillResponseIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_KillResponse->s1ap_KillResponse_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_mmestatustransferies( + S1ap_MMEStatusTransfer_t *s1ap_MMEStatusTransfer, + S1ap_MMEStatusTransferIEs_t *s1ap_MMEStatusTransferIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_MMEStatusTransfer != NULL); + assert(s1ap_MMEStatusTransferIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_MMEStatusTransferIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEStatusTransfer->s1ap_MMEStatusTransfer_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_MMEStatusTransferIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEStatusTransfer->s1ap_MMEStatusTransfer_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_StatusTransfer_TransparentContainer, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, + &s1ap_MMEStatusTransferIEs->eNB_StatusTransfer_TransparentContainer)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEStatusTransfer->s1ap_MMEStatusTransfer_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_mmeconfigurationupdateies( + S1ap_MMEConfigurationUpdate_t *s1ap_MMEConfigurationUpdate, + S1ap_MMEConfigurationUpdateIEs_t *s1ap_MMEConfigurationUpdateIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_MMEConfigurationUpdate != NULL); + assert(s1ap_MMEConfigurationUpdateIEs != NULL); + + /* Optional field */ + if (s1ap_MMEConfigurationUpdateIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEIES_MMENAME_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MMEname, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MMEname, + &s1ap_MMEConfigurationUpdateIEs->mmEname)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEConfigurationUpdate->s1ap_MMEConfigurationUpdate_ies.list, ie); + } + + /* Optional field */ + if (s1ap_MMEConfigurationUpdateIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEIES_SERVEDGUMMEIS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_ServedGUMMEIs, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ServedGUMMEIs, + &s1ap_MMEConfigurationUpdateIEs->servedGUMMEIs)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEConfigurationUpdate->s1ap_MMEConfigurationUpdate_ies.list, ie); + } + + /* Optional field */ + if (s1ap_MMEConfigurationUpdateIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEIES_RELATIVEMMECAPACITY_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RelativeMMECapacity, + S1ap_Criticality_reject, + &asn_DEF_S1ap_RelativeMMECapacity, + &s1ap_MMEConfigurationUpdateIEs->relativeMMECapacity)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEConfigurationUpdate->s1ap_MMEConfigurationUpdate_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_e_rabmodifyrequesties( + S1ap_E_RABModifyRequest_t *s1ap_E_RABModifyRequest, + S1ap_E_RABModifyRequestIEs_t *s1ap_E_RABModifyRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABModifyRequest != NULL); + assert(s1ap_E_RABModifyRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_E_RABModifyRequestIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyRequest->s1ap_E_RABModifyRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_E_RABModifyRequestIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyRequest->s1ap_E_RABModifyRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_E_RABModifyRequestIEs->presenceMask & S1AP_E_RABMODIFYREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UEAggregateMaximumBitrate, + &s1ap_E_RABModifyRequestIEs->uEaggregateMaximumBitrate)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyRequest->s1ap_E_RABModifyRequest_ies.list, ie); + } + + S1ap_E_RABToBeModifiedListBearerModReq_t e_RABToBeModifiedListBearerModReq; + + memset(&e_RABToBeModifiedListBearerModReq, 0, sizeof(S1ap_E_RABToBeModifiedListBearerModReq_t)); + + if (s1ap_encode_s1ap_e_rabtobemodifiedlistbearermodreq(&e_RABToBeModifiedListBearerModReq, &s1ap_E_RABModifyRequestIEs->e_RABToBeModifiedListBearerModReq) < 0) return -1; + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeModifiedListBearerModReq, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, + &e_RABToBeModifiedListBearerModReq)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyRequest->s1ap_E_RABModifyRequest_ies.list, ie); + + /* Free any dynamic allocation that is no more used */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABToBeModifiedListBearerModReq, &e_RABToBeModifiedListBearerModReq); + + return 0; +} + +int s1ap_encode_s1ap_e_rabtobeswitchedulitemies( + S1ap_E_RABToBeSwitchedULList_t *s1ap_E_RABToBeSwitchedULList, + S1ap_E_RABToBeSwitchedULItemIEs_t *s1ap_E_RABToBeSwitchedULItemIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABToBeSwitchedULList != NULL); + assert(s1ap_E_RABToBeSwitchedULItemIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedULItem, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABToBeSwitchedULItem, + &s1ap_E_RABToBeSwitchedULItemIEs->e_RABToBeSwitchedULItem)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSwitchedULList->s1ap_E_RABToBeSwitchedULList_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_enbconfigurationupdatefailureies( + S1ap_ENBConfigurationUpdateFailure_t *s1ap_ENBConfigurationUpdateFailure, + S1ap_ENBConfigurationUpdateFailureIEs_t *s1ap_ENBConfigurationUpdateFailureIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_ENBConfigurationUpdateFailure != NULL); + assert(s1ap_ENBConfigurationUpdateFailureIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_ENBConfigurationUpdateFailureIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationUpdateFailure->s1ap_ENBConfigurationUpdateFailure_ies.list, ie); + + /* Optional field */ + if (s1ap_ENBConfigurationUpdateFailureIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TimeToWait, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TimeToWait, + &s1ap_ENBConfigurationUpdateFailureIEs->timeToWait)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationUpdateFailure->s1ap_ENBConfigurationUpdateFailure_ies.list, ie); + } + + /* Optional field */ + if (s1ap_ENBConfigurationUpdateFailureIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_ENBConfigurationUpdateFailureIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationUpdateFailure->s1ap_ENBConfigurationUpdateFailure_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_reseties( + S1ap_Reset_t *s1ap_Reset, + S1ap_ResetIEs_t *s1ap_ResetIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_Reset != NULL); + assert(s1ap_ResetIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_ResetIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Reset->s1ap_Reset_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_ResetType, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ResetType, + &s1ap_ResetIEs->resetType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Reset->s1ap_Reset_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_s1setupresponseies( + S1ap_S1SetupResponse_t *s1ap_S1SetupResponse, + S1ap_S1SetupResponseIEs_t *s1ap_S1SetupResponseIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_S1SetupResponse != NULL); + assert(s1ap_S1SetupResponseIEs != NULL); + + /* Optional field */ + if (s1ap_S1SetupResponseIEs->presenceMask & S1AP_S1SETUPRESPONSEIES_MMENAME_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MMEname, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MMEname, + &s1ap_S1SetupResponseIEs->mmEname)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupResponse->s1ap_S1SetupResponse_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_ServedGUMMEIs, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ServedGUMMEIs, + &s1ap_S1SetupResponseIEs->servedGUMMEIs)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupResponse->s1ap_S1SetupResponse_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_RelativeMMECapacity, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_RelativeMMECapacity, + &s1ap_S1SetupResponseIEs->relativeMMECapacity)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupResponse->s1ap_S1SetupResponse_ies.list, ie); + + /* Optional field */ + if (s1ap_S1SetupResponseIEs->presenceMask & S1AP_S1SETUPRESPONSEIES_MMERELAYSUPPORTINDICATOR_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MMERelaySupportIndicator, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MMERelaySupportIndicator, + &s1ap_S1SetupResponseIEs->mmeRelaySupportIndicator)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupResponse->s1ap_S1SetupResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_S1SetupResponseIEs->presenceMask & S1AP_S1SETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_S1SetupResponseIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupResponse->s1ap_S1SetupResponse_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_pagingies( + S1ap_Paging_t *s1ap_Paging, + S1ap_PagingIEs_t *s1ap_PagingIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_Paging != NULL); + assert(s1ap_PagingIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UEIdentityIndexValue, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UEIdentityIndexValue, + &s1ap_PagingIEs->ueIdentityIndexValue)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Paging->s1ap_Paging_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UEPagingID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UEPagingID, + &s1ap_PagingIEs->uePagingID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Paging->s1ap_Paging_ies.list, ie); + + /* Optional field */ + if (s1ap_PagingIEs->presenceMask & S1AP_PAGINGIES_PAGINGDRX_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_pagingDRX, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_PagingDRX, + &s1ap_PagingIEs->pagingDRX)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Paging->s1ap_Paging_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CNDomain, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CNDomain, + &s1ap_PagingIEs->cnDomain)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Paging->s1ap_Paging_ies.list, ie); + + S1ap_TAIList_t taiList; + + memset(&taiList, 0, sizeof(S1ap_TAIList_t)); + + if (s1ap_encode_s1ap_tailist(&taiList, &s1ap_PagingIEs->taiList) < 0) return -1; + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TAIList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TAIList, + &taiList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Paging->s1ap_Paging_ies.list, ie); + + /* Free any dynamic allocation that is no more used */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_TAIList, &taiList); + + /* Optional field */ + if (s1ap_PagingIEs->presenceMask & S1AP_PAGINGIES_CSG_IDLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSG_IdList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CSG_IdList, + &s1ap_PagingIEs->csG_IdList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Paging->s1ap_Paging_ies.list, ie); + } + + /* Optional field */ + if (s1ap_PagingIEs->presenceMask & S1AP_PAGINGIES_PAGINGPRIORITY_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_PagingPriority, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_PagingPriority, + &s1ap_PagingIEs->pagingPriority)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Paging->s1ap_Paging_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_enbconfigurationupdateacknowledgeies( + S1ap_ENBConfigurationUpdateAcknowledge_t *s1ap_ENBConfigurationUpdateAcknowledge, + S1ap_ENBConfigurationUpdateAcknowledgeIEs_t *s1ap_ENBConfigurationUpdateAcknowledgeIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_ENBConfigurationUpdateAcknowledge != NULL); + assert(s1ap_ENBConfigurationUpdateAcknowledgeIEs != NULL); + + /* Optional field */ + if (s1ap_ENBConfigurationUpdateAcknowledgeIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_ENBConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationUpdateAcknowledge->s1ap_ENBConfigurationUpdateAcknowledge_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_e_rabreleasecommandies( + S1ap_E_RABReleaseCommand_t *s1ap_E_RABReleaseCommand, + S1ap_E_RABReleaseCommandIEs_t *s1ap_E_RABReleaseCommandIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABReleaseCommand != NULL); + assert(s1ap_E_RABReleaseCommandIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_E_RABReleaseCommandIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseCommand->s1ap_E_RABReleaseCommand_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_E_RABReleaseCommandIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseCommand->s1ap_E_RABReleaseCommand_ies.list, ie); + + /* Optional field */ + if (s1ap_E_RABReleaseCommandIEs->presenceMask & S1AP_E_RABRELEASECOMMANDIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UEAggregateMaximumBitrate, + &s1ap_E_RABReleaseCommandIEs->uEaggregateMaximumBitrate)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseCommand->s1ap_E_RABReleaseCommand_ies.list, ie); + } + + S1ap_E_RABList_t e_RABToBeReleasedList; + + memset(&e_RABToBeReleasedList, 0, sizeof(S1ap_E_RABList_t)); + + if (s1ap_encode_s1ap_e_rablist(&e_RABToBeReleasedList, &s1ap_E_RABReleaseCommandIEs->e_RABToBeReleasedList) < 0) return -1; + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeReleasedList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABList, + &e_RABToBeReleasedList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseCommand->s1ap_E_RABReleaseCommand_ies.list, ie); + + /* Free any dynamic allocation that is no more used */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABList, &e_RABToBeReleasedList); + + /* Optional field */ + if (s1ap_E_RABReleaseCommandIEs->presenceMask & S1AP_E_RABRELEASECOMMANDIES_NAS_PDU_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_NAS_PDU, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_NAS_PDU, + &s1ap_E_RABReleaseCommandIEs->nas_pdu)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseCommand->s1ap_E_RABReleaseCommand_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_pathswitchrequestfailureies( + S1ap_PathSwitchRequestFailure_t *s1ap_PathSwitchRequestFailure, + S1ap_PathSwitchRequestFailureIEs_t *s1ap_PathSwitchRequestFailureIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_PathSwitchRequestFailure != NULL); + assert(s1ap_PathSwitchRequestFailureIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_PathSwitchRequestFailureIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestFailure->s1ap_PathSwitchRequestFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_PathSwitchRequestFailureIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestFailure->s1ap_PathSwitchRequestFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_PathSwitchRequestFailureIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestFailure->s1ap_PathSwitchRequestFailure_ies.list, ie); + + /* Optional field */ + if (s1ap_PathSwitchRequestFailureIEs->presenceMask & S1AP_PATHSWITCHREQUESTFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_PathSwitchRequestFailureIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestFailure->s1ap_PathSwitchRequestFailure_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_e_rabmodifyresponseies( + S1ap_E_RABModifyResponse_t *s1ap_E_RABModifyResponse, + S1ap_E_RABModifyResponseIEs_t *s1ap_E_RABModifyResponseIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABModifyResponse != NULL); + assert(s1ap_E_RABModifyResponseIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_E_RABModifyResponseIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyResponse->s1ap_E_RABModifyResponse_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_E_RABModifyResponseIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyResponse->s1ap_E_RABModifyResponse_ies.list, ie); + + /* Optional field */ + if (s1ap_E_RABModifyResponseIEs->presenceMask & S1AP_E_RABMODIFYRESPONSEIES_E_RABMODIFYLISTBEARERMODRES_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABModifyListBearerModRes, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABModifyListBearerModRes, + &s1ap_E_RABModifyResponseIEs->e_RABModifyListBearerModRes)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyResponse->s1ap_E_RABModifyResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_E_RABModifyResponseIEs->presenceMask & S1AP_E_RABMODIFYRESPONSEIES_E_RABFAILEDTOMODIFYLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABFailedToModifyList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABList, + &s1ap_E_RABModifyResponseIEs->e_RABFailedToModifyList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyResponse->s1ap_E_RABModifyResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_E_RABModifyResponseIEs->presenceMask & S1AP_E_RABMODIFYRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_E_RABModifyResponseIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyResponse->s1ap_E_RABModifyResponse_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_handovernotifyies( + S1ap_HandoverNotify_t *s1ap_HandoverNotify, + S1ap_HandoverNotifyIEs_t *s1ap_HandoverNotifyIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverNotify != NULL); + assert(s1ap_HandoverNotifyIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverNotifyIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverNotify->s1ap_HandoverNotify_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_HandoverNotifyIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverNotify->s1ap_HandoverNotify_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_EUTRAN_CGI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_EUTRAN_CGI, + &s1ap_HandoverNotifyIEs->eutran_cgi)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverNotify->s1ap_HandoverNotify_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TAI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TAI, + &s1ap_HandoverNotifyIEs->tai)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverNotify->s1ap_HandoverNotify_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_handovercancelacknowledgeies( + S1ap_HandoverCancelAcknowledge_t *s1ap_HandoverCancelAcknowledge, + S1ap_HandoverCancelAcknowledgeIEs_t *s1ap_HandoverCancelAcknowledgeIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverCancelAcknowledge != NULL); + assert(s1ap_HandoverCancelAcknowledgeIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverCancelAcknowledgeIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCancelAcknowledge->s1ap_HandoverCancelAcknowledge_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_HandoverCancelAcknowledgeIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCancelAcknowledge->s1ap_HandoverCancelAcknowledge_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverCancelAcknowledgeIEs->presenceMask & S1AP_HANDOVERCANCELACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_HandoverCancelAcknowledgeIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCancelAcknowledge->s1ap_HandoverCancelAcknowledge_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_initialcontextsetupfailureies( + S1ap_InitialContextSetupFailure_t *s1ap_InitialContextSetupFailure, + S1ap_InitialContextSetupFailureIEs_t *s1ap_InitialContextSetupFailureIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_InitialContextSetupFailure != NULL); + assert(s1ap_InitialContextSetupFailureIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_InitialContextSetupFailureIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupFailure->s1ap_InitialContextSetupFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_InitialContextSetupFailureIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupFailure->s1ap_InitialContextSetupFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_InitialContextSetupFailureIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupFailure->s1ap_InitialContextSetupFailure_ies.list, ie); + + /* Optional field */ + if (s1ap_InitialContextSetupFailureIEs->presenceMask & S1AP_INITIALCONTEXTSETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_InitialContextSetupFailureIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupFailure->s1ap_InitialContextSetupFailure_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_handovercommandies( + S1ap_HandoverCommand_t *s1ap_HandoverCommand, + S1ap_HandoverCommandIEs_t *s1ap_HandoverCommandIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverCommand != NULL); + assert(s1ap_HandoverCommandIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverCommandIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCommand->s1ap_HandoverCommand_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_HandoverCommandIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCommand->s1ap_HandoverCommand_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_HandoverType, + S1ap_Criticality_reject, + &asn_DEF_S1ap_HandoverType, + &s1ap_HandoverCommandIEs->handoverType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCommand->s1ap_HandoverCommand_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverCommandIEs->presenceMask & S1AP_HANDOVERCOMMANDIES_E_RABSUBJECTTODATAFORWARDINGLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABSubjecttoDataForwardingList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, + &s1ap_HandoverCommandIEs->e_RABSubjecttoDataForwardingList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCommand->s1ap_HandoverCommand_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverCommandIEs->presenceMask & S1AP_HANDOVERCOMMANDIES_E_RABTORELEASELISTHOCMD_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABtoReleaseListHOCmd, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABList, + &s1ap_HandoverCommandIEs->e_RABtoReleaseListHOCmd)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCommand->s1ap_HandoverCommand_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Target_ToSource_TransparentContainer, + &s1ap_HandoverCommandIEs->target_ToSource_TransparentContainer)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCommand->s1ap_HandoverCommand_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverCommandIEs->presenceMask & S1AP_HANDOVERCOMMANDIES_TARGET_TOSOURCE_TRANSPARENTCONTAINER_SECONDARY_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer_Secondary, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Target_ToSource_TransparentContainer, + &s1ap_HandoverCommandIEs->target_ToSource_TransparentContainer_Secondary)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCommand->s1ap_HandoverCommand_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverCommandIEs->presenceMask & S1AP_HANDOVERCOMMANDIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_HandoverCommandIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverCommand->s1ap_HandoverCommand_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_mmedirectinformationtransferies( + S1ap_MMEDirectInformationTransfer_t *s1ap_MMEDirectInformationTransfer, + S1ap_MMEDirectInformationTransferIEs_t *s1ap_MMEDirectInformationTransferIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_MMEDirectInformationTransfer != NULL); + assert(s1ap_MMEDirectInformationTransferIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Inter_SystemInformationTransferTypeMDT, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Inter_SystemInformationTransferType, + &s1ap_MMEDirectInformationTransferIEs->inter_SystemInformationTransferTypeMDT)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEDirectInformationTransfer->s1ap_MMEDirectInformationTransfer_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_errorindicationies( + S1ap_ErrorIndication_t *s1ap_ErrorIndication, + S1ap_ErrorIndicationIEs_t *s1ap_ErrorIndicationIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_ErrorIndication != NULL); + assert(s1ap_ErrorIndicationIEs != NULL); + + /* Optional field */ + if (s1ap_ErrorIndicationIEs->presenceMask & S1AP_ERRORINDICATIONIES_MME_UE_S1AP_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_ErrorIndicationIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ErrorIndication->s1ap_ErrorIndication_ies.list, ie); + } + + /* Optional field */ + if (s1ap_ErrorIndicationIEs->presenceMask & S1AP_ERRORINDICATIONIES_ENB_UE_S1AP_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_ErrorIndicationIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ErrorIndication->s1ap_ErrorIndication_ies.list, ie); + } + + /* Optional field */ + if (s1ap_ErrorIndicationIEs->presenceMask & S1AP_ERRORINDICATIONIES_CAUSE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_ErrorIndicationIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ErrorIndication->s1ap_ErrorIndication_ies.list, ie); + } + + /* Optional field */ + if (s1ap_ErrorIndicationIEs->presenceMask & S1AP_ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_ErrorIndicationIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ErrorIndication->s1ap_ErrorIndication_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_overloadstarties( + S1ap_OverloadStart_t *s1ap_OverloadStart, + S1ap_OverloadStartIEs_t *s1ap_OverloadStartIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_OverloadStart != NULL); + assert(s1ap_OverloadStartIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_OverloadResponse, + S1ap_Criticality_reject, + &asn_DEF_S1ap_OverloadResponse, + &s1ap_OverloadStartIEs->overloadResponse)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_OverloadStart->s1ap_OverloadStart_ies.list, ie); + + /* Optional field */ + if (s1ap_OverloadStartIEs->presenceMask & S1AP_OVERLOADSTARTIES_GUMMEILIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_GUMMEIList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_GUMMEIList, + &s1ap_OverloadStartIEs->gummeiList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_OverloadStart->s1ap_OverloadStart_ies.list, ie); + } + + /* Optional field */ + if (s1ap_OverloadStartIEs->presenceMask & S1AP_OVERLOADSTARTIES_TRAFFICLOADREDUCTIONINDICATION_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TrafficLoadReductionIndication, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TrafficLoadReductionIndication, + &s1ap_OverloadStartIEs->trafficLoadReductionIndication)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_OverloadStart->s1ap_OverloadStart_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_downlinknonueassociatedlppatransport_ies( + S1ap_DownlinkNonUEAssociatedLPPaTransport_t *s1ap_DownlinkNonUEAssociatedLPPaTransport, + S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_DownlinkNonUEAssociatedLPPaTransport != NULL); + assert(s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Routing_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Routing_ID, + &s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs->routing_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkNonUEAssociatedLPPaTransport->s1ap_DownlinkNonUEAssociatedLPPaTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_LPPa_PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_LPPa_PDU, + &s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs->lpPa_PDU)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkNonUEAssociatedLPPaTransport->s1ap_DownlinkNonUEAssociatedLPPaTransport_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_handoverrequestacknowledgeies( + S1ap_HandoverRequestAcknowledge_t *s1ap_HandoverRequestAcknowledge, + S1ap_HandoverRequestAcknowledgeIEs_t *s1ap_HandoverRequestAcknowledgeIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverRequestAcknowledge != NULL); + assert(s1ap_HandoverRequestAcknowledgeIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverRequestAcknowledgeIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequestAcknowledge->s1ap_HandoverRequestAcknowledge_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_HandoverRequestAcknowledgeIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequestAcknowledge->s1ap_HandoverRequestAcknowledge_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABAdmittedList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABAdmittedList, + &s1ap_HandoverRequestAcknowledgeIEs->e_RABAdmittedList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequestAcknowledge->s1ap_HandoverRequestAcknowledge_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverRequestAcknowledgeIEs->presenceMask & S1AP_HANDOVERREQUESTACKNOWLEDGEIES_E_RABFAILEDTOSETUPLISTHOREQACK_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListHOReqAck, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, + &s1ap_HandoverRequestAcknowledgeIEs->e_RABFailedToSetupListHOReqAck)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequestAcknowledge->s1ap_HandoverRequestAcknowledge_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Target_ToSource_TransparentContainer, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Target_ToSource_TransparentContainer, + &s1ap_HandoverRequestAcknowledgeIEs->target_ToSource_TransparentContainer)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequestAcknowledge->s1ap_HandoverRequestAcknowledge_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverRequestAcknowledgeIEs->presenceMask & S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CSG_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSG_Id, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CSG_Id, + &s1ap_HandoverRequestAcknowledgeIEs->csG_Id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequestAcknowledge->s1ap_HandoverRequestAcknowledge_ies.list, ie); + } + + /* Optional field */ + if (s1ap_HandoverRequestAcknowledgeIEs->presenceMask & S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_HandoverRequestAcknowledgeIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverRequestAcknowledge->s1ap_HandoverRequestAcknowledge_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_downlinkueassociatedlppatransport_ies( + S1ap_DownlinkUEAssociatedLPPaTransport_t *s1ap_DownlinkUEAssociatedLPPaTransport, + S1ap_DownlinkUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkUEAssociatedLPPaTransport_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_DownlinkUEAssociatedLPPaTransport != NULL); + assert(s1ap_DownlinkUEAssociatedLPPaTransport_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkUEAssociatedLPPaTransport->s1ap_DownlinkUEAssociatedLPPaTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkUEAssociatedLPPaTransport->s1ap_DownlinkUEAssociatedLPPaTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Routing_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Routing_ID, + &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->routing_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkUEAssociatedLPPaTransport->s1ap_DownlinkUEAssociatedLPPaTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_LPPa_PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_LPPa_PDU, + &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->lpPa_PDU)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkUEAssociatedLPPaTransport->s1ap_DownlinkUEAssociatedLPPaTransport_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_uecontextmodificationfailureies( + S1ap_UEContextModificationFailure_t *s1ap_UEContextModificationFailure, + S1ap_UEContextModificationFailureIEs_t *s1ap_UEContextModificationFailureIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UEContextModificationFailure != NULL); + assert(s1ap_UEContextModificationFailureIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UEContextModificationFailureIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationFailure->s1ap_UEContextModificationFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UEContextModificationFailureIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationFailure->s1ap_UEContextModificationFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_UEContextModificationFailureIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationFailure->s1ap_UEContextModificationFailure_ies.list, ie); + + /* Optional field */ + if (s1ap_UEContextModificationFailureIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_UEContextModificationFailureIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextModificationFailure->s1ap_UEContextModificationFailure_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_mmeconfigurationtransferies( + S1ap_MMEConfigurationTransfer_t *s1ap_MMEConfigurationTransfer, + S1ap_MMEConfigurationTransferIEs_t *s1ap_MMEConfigurationTransferIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_MMEConfigurationTransfer != NULL); + assert(s1ap_MMEConfigurationTransferIEs != NULL); + + /* Optional field */ + if (s1ap_MMEConfigurationTransferIEs->presenceMask & S1AP_MMECONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERMCT_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SONConfigurationTransferMCT, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_SONConfigurationTransfer, + &s1ap_MMEConfigurationTransferIEs->sonConfigurationTransferMCT)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEConfigurationTransfer->s1ap_MMEConfigurationTransfer_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_pathswitchrequestacknowledgeies( + S1ap_PathSwitchRequestAcknowledge_t *s1ap_PathSwitchRequestAcknowledge, + S1ap_PathSwitchRequestAcknowledgeIEs_t *s1ap_PathSwitchRequestAcknowledgeIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_PathSwitchRequestAcknowledge != NULL); + assert(s1ap_PathSwitchRequestAcknowledgeIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_PathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestAcknowledge->s1ap_PathSwitchRequestAcknowledge_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_PathSwitchRequestAcknowledgeIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestAcknowledge->s1ap_PathSwitchRequestAcknowledge_ies.list, ie); + + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UEAggregateMaximumBitrate, + &s1ap_PathSwitchRequestAcknowledgeIEs->uEaggregateMaximumBitrate)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestAcknowledge->s1ap_PathSwitchRequestAcknowledge_ies.list, ie); + } + + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBESWITCHEDULLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedULList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABToBeSwitchedULList, + &s1ap_PathSwitchRequestAcknowledgeIEs->e_RABToBeSwitchedULList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestAcknowledge->s1ap_PathSwitchRequestAcknowledge_ies.list, ie); + } + + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBERELEASEDLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeReleasedList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABList, + &s1ap_PathSwitchRequestAcknowledgeIEs->e_RABToBeReleasedList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestAcknowledge->s1ap_PathSwitchRequestAcknowledge_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SecurityContext, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SecurityContext, + &s1ap_PathSwitchRequestAcknowledgeIEs->securityContext)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestAcknowledge->s1ap_PathSwitchRequestAcknowledge_ies.list, ie); + + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_PathSwitchRequestAcknowledgeIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestAcknowledge->s1ap_PathSwitchRequestAcknowledge_ies.list, ie); + } + + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_MME_UE_S1AP_ID_2_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID_2, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_PathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id_2)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequestAcknowledge->s1ap_PathSwitchRequestAcknowledge_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_s1setupfailureies( + S1ap_S1SetupFailure_t *s1ap_S1SetupFailure, + S1ap_S1SetupFailureIEs_t *s1ap_S1SetupFailureIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_S1SetupFailure != NULL); + assert(s1ap_S1SetupFailureIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_S1SetupFailureIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupFailure->s1ap_S1SetupFailure_ies.list, ie); + + /* Optional field */ + if (s1ap_S1SetupFailureIEs->presenceMask & S1AP_S1SETUPFAILUREIES_TIMETOWAIT_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TimeToWait, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TimeToWait, + &s1ap_S1SetupFailureIEs->timeToWait)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupFailure->s1ap_S1SetupFailure_ies.list, ie); + } + + /* Optional field */ + if (s1ap_S1SetupFailureIEs->presenceMask & S1AP_S1SETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_S1SetupFailureIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupFailure->s1ap_S1SetupFailure_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_mmeconfigurationupdatefailureies( + S1ap_MMEConfigurationUpdateFailure_t *s1ap_MMEConfigurationUpdateFailure, + S1ap_MMEConfigurationUpdateFailureIEs_t *s1ap_MMEConfigurationUpdateFailureIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_MMEConfigurationUpdateFailure != NULL); + assert(s1ap_MMEConfigurationUpdateFailureIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_MMEConfigurationUpdateFailureIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEConfigurationUpdateFailure->s1ap_MMEConfigurationUpdateFailure_ies.list, ie); + + /* Optional field */ + if (s1ap_MMEConfigurationUpdateFailureIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TimeToWait, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TimeToWait, + &s1ap_MMEConfigurationUpdateFailureIEs->timeToWait)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEConfigurationUpdateFailure->s1ap_MMEConfigurationUpdateFailure_ies.list, ie); + } + + /* Optional field */ + if (s1ap_MMEConfigurationUpdateFailureIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_MMEConfigurationUpdateFailureIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_MMEConfigurationUpdateFailure->s1ap_MMEConfigurationUpdateFailure_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_initialcontextsetupresponseies( + S1ap_InitialContextSetupResponse_t *s1ap_InitialContextSetupResponse, + S1ap_InitialContextSetupResponseIEs_t *s1ap_InitialContextSetupResponseIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_InitialContextSetupResponse != NULL); + assert(s1ap_InitialContextSetupResponseIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_InitialContextSetupResponseIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupResponse->s1ap_InitialContextSetupResponse_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_InitialContextSetupResponseIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupResponse->s1ap_InitialContextSetupResponse_ies.list, ie); + + S1ap_E_RABSetupListCtxtSURes_t e_RABSetupListCtxtSURes; + + memset(&e_RABSetupListCtxtSURes, 0, sizeof(S1ap_E_RABSetupListCtxtSURes_t)); + + if (s1ap_encode_s1ap_e_rabsetuplistctxtsures(&e_RABSetupListCtxtSURes, &s1ap_InitialContextSetupResponseIEs->e_RABSetupListCtxtSURes) < 0) return -1; + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABSetupListCtxtSURes, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABSetupListCtxtSURes, + &e_RABSetupListCtxtSURes)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupResponse->s1ap_InitialContextSetupResponse_ies.list, ie); + + /* Free any dynamic allocation that is no more used */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABSetupListCtxtSURes, &e_RABSetupListCtxtSURes); + + /* Optional field */ + if (s1ap_InitialContextSetupResponseIEs->presenceMask & S1AP_INITIALCONTEXTSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTCTXTSURES_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListCtxtSURes, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABList, + &s1ap_InitialContextSetupResponseIEs->e_RABFailedToSetupListCtxtSURes)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupResponse->s1ap_InitialContextSetupResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_InitialContextSetupResponseIEs->presenceMask & S1AP_INITIALCONTEXTSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_InitialContextSetupResponseIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_InitialContextSetupResponse->s1ap_InitialContextSetupResponse_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_downlinks1cdma2000tunnelingies( + S1ap_DownlinkS1cdma2000tunneling_t *s1ap_DownlinkS1cdma2000tunneling, + S1ap_DownlinkS1cdma2000tunnelingIEs_t *s1ap_DownlinkS1cdma2000tunnelingIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_DownlinkS1cdma2000tunneling != NULL); + assert(s1ap_DownlinkS1cdma2000tunnelingIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_DownlinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkS1cdma2000tunneling->s1ap_DownlinkS1cdma2000tunneling_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_DownlinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkS1cdma2000tunneling->s1ap_DownlinkS1cdma2000tunneling_ies.list, ie); + + /* Optional field */ + if (s1ap_DownlinkS1cdma2000tunnelingIEs->presenceMask & S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_E_RABSUBJECTTODATAFORWARDINGLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABSubjecttoDataForwardingList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, + &s1ap_DownlinkS1cdma2000tunnelingIEs->e_RABSubjecttoDataForwardingList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkS1cdma2000tunneling->s1ap_DownlinkS1cdma2000tunneling_ies.list, ie); + } + + /* Optional field */ + if (s1ap_DownlinkS1cdma2000tunnelingIEs->presenceMask & S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_CDMA2000HOSTATUS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000HOStatus, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cdma2000HOStatus, + &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000HOStatus)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkS1cdma2000tunneling->s1ap_DownlinkS1cdma2000tunneling_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000RATType, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Cdma2000RATType, + &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000RATType)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkS1cdma2000tunneling->s1ap_DownlinkS1cdma2000tunneling_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_cdma2000PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Cdma2000PDU, + &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000PDU)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkS1cdma2000tunneling->s1ap_DownlinkS1cdma2000tunneling_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_overloadstopies( + S1ap_OverloadStop_t *s1ap_OverloadStop, + S1ap_OverloadStopIEs_t *s1ap_OverloadStopIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_OverloadStop != NULL); + assert(s1ap_OverloadStopIEs != NULL); + + /* Optional field */ + if (s1ap_OverloadStopIEs->presenceMask & S1AP_OVERLOADSTOPIES_GUMMEILIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_GUMMEIList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_GUMMEIList, + &s1ap_OverloadStopIEs->gummeiList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_OverloadStop->s1ap_OverloadStop_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_enbconfigurationupdateies( + S1ap_ENBConfigurationUpdate_t *s1ap_ENBConfigurationUpdate, + S1ap_ENBConfigurationUpdateIEs_t *s1ap_ENBConfigurationUpdateIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_ENBConfigurationUpdate != NULL); + assert(s1ap_ENBConfigurationUpdateIEs != NULL); + + /* Optional field */ + if (s1ap_ENBConfigurationUpdateIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEIES_ENBNAME_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNBname, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENBname, + &s1ap_ENBConfigurationUpdateIEs->eNBname)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationUpdate->s1ap_ENBConfigurationUpdate_ies.list, ie); + } + + /* Optional field */ + if (s1ap_ENBConfigurationUpdateIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEIES_SUPPORTEDTAS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SupportedTAs, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SupportedTAs, + &s1ap_ENBConfigurationUpdateIEs->supportedTAs)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationUpdate->s1ap_ENBConfigurationUpdate_ies.list, ie); + } + + /* Optional field */ + if (s1ap_ENBConfigurationUpdateIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEIES_CSG_IDLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSG_IdList, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CSG_IdList, + &s1ap_ENBConfigurationUpdateIEs->csG_IdList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationUpdate->s1ap_ENBConfigurationUpdate_ies.list, ie); + } + + /* Optional field */ + if (s1ap_ENBConfigurationUpdateIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEIES_DEFAULTPAGINGDRX_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_DefaultPagingDRX, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_PagingDRX, + &s1ap_ENBConfigurationUpdateIEs->defaultPagingDRX)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationUpdate->s1ap_ENBConfigurationUpdate_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_tracefailureindicationies( + S1ap_TraceFailureIndication_t *s1ap_TraceFailureIndication, + S1ap_TraceFailureIndicationIEs_t *s1ap_TraceFailureIndicationIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_TraceFailureIndication != NULL); + assert(s1ap_TraceFailureIndicationIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_TraceFailureIndicationIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_TraceFailureIndication->s1ap_TraceFailureIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_TraceFailureIndicationIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_TraceFailureIndication->s1ap_TraceFailureIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_UTRAN_Trace_ID, + &s1ap_TraceFailureIndicationIEs->e_UTRAN_Trace_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_TraceFailureIndication->s1ap_TraceFailureIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_TraceFailureIndicationIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_TraceFailureIndication->s1ap_TraceFailureIndication_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_enbconfigurationtransferies( + S1ap_ENBConfigurationTransfer_t *s1ap_ENBConfigurationTransfer, + S1ap_ENBConfigurationTransferIEs_t *s1ap_ENBConfigurationTransferIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_ENBConfigurationTransfer != NULL); + assert(s1ap_ENBConfigurationTransferIEs != NULL); + + /* Optional field */ + if (s1ap_ENBConfigurationTransferIEs->presenceMask & S1AP_ENBCONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERECT_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SONConfigurationTransferECT, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_SONConfigurationTransfer, + &s1ap_ENBConfigurationTransferIEs->sonConfigurationTransferECT)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBConfigurationTransfer->s1ap_ENBConfigurationTransfer_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_handoverfailureies( + S1ap_HandoverFailure_t *s1ap_HandoverFailure, + S1ap_HandoverFailureIEs_t *s1ap_HandoverFailureIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_HandoverFailure != NULL); + assert(s1ap_HandoverFailureIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_HandoverFailureIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverFailure->s1ap_HandoverFailure_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_HandoverFailureIEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverFailure->s1ap_HandoverFailure_ies.list, ie); + + /* Optional field */ + if (s1ap_HandoverFailureIEs->presenceMask & S1AP_HANDOVERFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_HandoverFailureIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_HandoverFailure->s1ap_HandoverFailure_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_e_rabsetupresponseies( + S1ap_E_RABSetupResponse_t *s1ap_E_RABSetupResponse, + S1ap_E_RABSetupResponseIEs_t *s1ap_E_RABSetupResponseIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABSetupResponse != NULL); + assert(s1ap_E_RABSetupResponseIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_E_RABSetupResponseIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupResponse->s1ap_E_RABSetupResponse_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_E_RABSetupResponseIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupResponse->s1ap_E_RABSetupResponse_ies.list, ie); + + /* Optional field */ + if (s1ap_E_RABSetupResponseIEs->presenceMask & S1AP_E_RABSETUPRESPONSEIES_E_RABSETUPLISTBEARERSURES_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABSetupListBearerSURes, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABSetupListBearerSURes, + &s1ap_E_RABSetupResponseIEs->e_RABSetupListBearerSURes)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupResponse->s1ap_E_RABSetupResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_E_RABSetupResponseIEs->presenceMask & S1AP_E_RABSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTBEARERSURES_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABFailedToSetupListBearerSURes, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABList, + &s1ap_E_RABSetupResponseIEs->e_RABFailedToSetupListBearerSURes)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupResponse->s1ap_E_RABSetupResponse_ies.list, ie); + } + + /* Optional field */ + if (s1ap_E_RABSetupResponseIEs->presenceMask & S1AP_E_RABSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_E_RABSetupResponseIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupResponse->s1ap_E_RABSetupResponse_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_uecontextreleasecommand_ies( + S1ap_UEContextReleaseCommand_t *s1ap_UEContextReleaseCommand, + S1ap_UEContextReleaseCommand_IEs_t *s1ap_UEContextReleaseCommand_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UEContextReleaseCommand != NULL); + assert(s1ap_UEContextReleaseCommand_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UE_S1AP_IDs, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UE_S1AP_IDs, + &s1ap_UEContextReleaseCommand_IEs->uE_S1AP_IDs)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseCommand->s1ap_UEContextReleaseCommand_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_UEContextReleaseCommand_IEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseCommand->s1ap_UEContextReleaseCommand_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_pathswitchrequesties( + S1ap_PathSwitchRequest_t *s1ap_PathSwitchRequest, + S1ap_PathSwitchRequestIEs_t *s1ap_PathSwitchRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_PathSwitchRequest != NULL); + assert(s1ap_PathSwitchRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_PathSwitchRequestIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSwitchedDLList, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeSwitchedDLList, + &s1ap_PathSwitchRequestIEs->e_RABToBeSwitchedDLList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SourceMME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_PathSwitchRequestIEs->sourceMME_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_EUTRAN_CGI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_EUTRAN_CGI, + &s1ap_PathSwitchRequestIEs->eutran_cgi)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TAI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TAI, + &s1ap_PathSwitchRequestIEs->tai)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UESecurityCapabilities, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UESecurityCapabilities, + &s1ap_PathSwitchRequestIEs->ueSecurityCapabilities)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_PathSwitchRequestIEs->presenceMask & S1AP_PATHSWITCHREQUESTIES_CSG_ID_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSG_Id, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CSG_Id, + &s1ap_PathSwitchRequestIEs->csG_Id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_PathSwitchRequestIEs->presenceMask & S1AP_PATHSWITCHREQUESTIES_CELLACCESSMODE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CellAccessMode, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CellAccessMode, + &s1ap_PathSwitchRequestIEs->cellAccessMode)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + } + + /* Optional field */ + if (s1ap_PathSwitchRequestIEs->presenceMask & S1AP_PATHSWITCHREQUESTIES_SOURCEMME_S1AP_GUMMEI_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SourceMME_S1ap_GUMMEI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_GUMMEI, + &s1ap_PathSwitchRequestIEs->sourceMME_S1ap_GUMMEI)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_PathSwitchRequest->s1ap_PathSwitchRequest_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_downlinknastransport_ies( + S1ap_DownlinkNASTransport_t *s1ap_DownlinkNASTransport, + S1ap_DownlinkNASTransport_IEs_t *s1ap_DownlinkNASTransport_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_DownlinkNASTransport != NULL); + assert(s1ap_DownlinkNASTransport_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_DownlinkNASTransport_IEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkNASTransport->s1ap_DownlinkNASTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_DownlinkNASTransport_IEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkNASTransport->s1ap_DownlinkNASTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_NAS_PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_NAS_PDU, + &s1ap_DownlinkNASTransport_IEs->nas_pdu)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkNASTransport->s1ap_DownlinkNASTransport_ies.list, ie); + + /* Optional field */ + if (s1ap_DownlinkNASTransport_IEs->presenceMask & S1AP_DOWNLINKNASTRANSPORT_IES_HANDOVERRESTRICTIONLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_HandoverRestrictionList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_HandoverRestrictionList, + &s1ap_DownlinkNASTransport_IEs->handoverRestrictionList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkNASTransport->s1ap_DownlinkNASTransport_ies.list, ie); + } + + /* Optional field */ + if (s1ap_DownlinkNASTransport_IEs->presenceMask & S1AP_DOWNLINKNASTRANSPORT_IES_SUBSCRIBERPROFILEIDFORRFP_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SubscriberProfileIDforRFP, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_SubscriberProfileIDforRFP, + &s1ap_DownlinkNASTransport_IEs->subscriberProfileIDforRFP)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_DownlinkNASTransport->s1ap_DownlinkNASTransport_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_e_rabreleaseindicationies( + S1ap_E_RABReleaseIndication_t *s1ap_E_RABReleaseIndication, + S1ap_E_RABReleaseIndicationIEs_t *s1ap_E_RABReleaseIndicationIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABReleaseIndication != NULL); + assert(s1ap_E_RABReleaseIndicationIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_E_RABReleaseIndicationIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseIndication->s1ap_E_RABReleaseIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_E_RABReleaseIndicationIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseIndication->s1ap_E_RABReleaseIndication_ies.list, ie); + + S1ap_E_RABList_t e_RABReleasedList; + + memset(&e_RABReleasedList, 0, sizeof(S1ap_E_RABList_t)); + + if (s1ap_encode_s1ap_e_rablist(&e_RABReleasedList, &s1ap_E_RABReleaseIndicationIEs->e_RABReleasedList) < 0) return -1; + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABReleasedList, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABList, + &e_RABReleasedList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseIndication->s1ap_E_RABReleaseIndication_ies.list, ie); + + /* Free any dynamic allocation that is no more used */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABList, &e_RABReleasedList); + + return 0; +} + +int s1ap_encode_s1ap_s1setuprequesties( + S1ap_S1SetupRequest_t *s1ap_S1SetupRequest, + S1ap_S1SetupRequestIEs_t *s1ap_S1SetupRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_S1SetupRequest != NULL); + assert(s1ap_S1SetupRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Global_ENB_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Global_ENB_ID, + &s1ap_S1SetupRequestIEs->global_ENB_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupRequest->s1ap_S1SetupRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_S1SetupRequestIEs->presenceMask & S1AP_S1SETUPREQUESTIES_ENBNAME_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNBname, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENBname, + &s1ap_S1SetupRequestIEs->eNBname)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupRequest->s1ap_S1SetupRequest_ies.list, ie); + } + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_SupportedTAs, + S1ap_Criticality_reject, + &asn_DEF_S1ap_SupportedTAs, + &s1ap_S1SetupRequestIEs->supportedTAs)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupRequest->s1ap_S1SetupRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_DefaultPagingDRX, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_PagingDRX, + &s1ap_S1SetupRequestIEs->defaultPagingDRX)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupRequest->s1ap_S1SetupRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_S1SetupRequestIEs->presenceMask & S1AP_S1SETUPREQUESTIES_CSG_IDLIST_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CSG_IdList, + S1ap_Criticality_reject, + &asn_DEF_S1ap_CSG_IdList, + &s1ap_S1SetupRequestIEs->csG_IdList)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_S1SetupRequest->s1ap_S1SetupRequest_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_nasnondeliveryindication_ies( + S1ap_NASNonDeliveryIndication_t *s1ap_NASNonDeliveryIndication, + S1ap_NASNonDeliveryIndication_IEs_t *s1ap_NASNonDeliveryIndication_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_NASNonDeliveryIndication != NULL); + assert(s1ap_NASNonDeliveryIndication_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_NASNonDeliveryIndication_IEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_NASNonDeliveryIndication->s1ap_NASNonDeliveryIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_NASNonDeliveryIndication_IEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_NASNonDeliveryIndication->s1ap_NASNonDeliveryIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_NAS_PDU, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_NAS_PDU, + &s1ap_NASNonDeliveryIndication_IEs->nas_pdu)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_NASNonDeliveryIndication->s1ap_NASNonDeliveryIndication_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Cause, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Cause, + &s1ap_NASNonDeliveryIndication_IEs->cause)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_NASNonDeliveryIndication->s1ap_NASNonDeliveryIndication_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_celltraffictraceies( + S1ap_CellTrafficTrace_t *s1ap_CellTrafficTrace, + S1ap_CellTrafficTraceIEs_t *s1ap_CellTrafficTraceIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_CellTrafficTrace != NULL); + assert(s1ap_CellTrafficTraceIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_CellTrafficTraceIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_CellTrafficTrace->s1ap_CellTrafficTrace_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_CellTrafficTraceIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_CellTrafficTrace->s1ap_CellTrafficTrace_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_UTRAN_Trace_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_UTRAN_Trace_ID, + &s1ap_CellTrafficTraceIEs->e_UTRAN_Trace_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_CellTrafficTrace->s1ap_CellTrafficTrace_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_EUTRAN_CGI, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_EUTRAN_CGI, + &s1ap_CellTrafficTraceIEs->eutran_cgi)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_CellTrafficTrace->s1ap_CellTrafficTrace_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TraceCollectionEntityIPAddress, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TransportLayerAddress, + &s1ap_CellTrafficTraceIEs->traceCollectionEntityIPAddress)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_CellTrafficTrace->s1ap_CellTrafficTrace_ies.list, ie); + + /* Optional field */ + if (s1ap_CellTrafficTraceIEs->presenceMask & S1AP_CELLTRAFFICTRACEIES_PRIVACYINDICATOR_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_PrivacyIndicator, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_PrivacyIndicator, + &s1ap_CellTrafficTraceIEs->privacyIndicator)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_CellTrafficTrace->s1ap_CellTrafficTrace_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_e_rabsetuprequesties( + S1ap_E_RABSetupRequest_t *s1ap_E_RABSetupRequest, + S1ap_E_RABSetupRequestIEs_t *s1ap_E_RABSetupRequestIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_E_RABSetupRequest != NULL); + assert(s1ap_E_RABSetupRequestIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_E_RABSetupRequestIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupRequest->s1ap_E_RABSetupRequest_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_E_RABSetupRequestIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupRequest->s1ap_E_RABSetupRequest_ies.list, ie); + + /* Optional field */ + if (s1ap_E_RABSetupRequestIEs->presenceMask & S1AP_E_RABSETUPREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_uEaggregateMaximumBitrate, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UEAggregateMaximumBitrate, + &s1ap_E_RABSetupRequestIEs->uEaggregateMaximumBitrate)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupRequest->s1ap_E_RABSetupRequest_ies.list, ie); + } + + S1ap_E_RABToBeSetupListBearerSUReq_t e_RABToBeSetupListBearerSUReq; + + memset(&e_RABToBeSetupListBearerSUReq, 0, sizeof(S1ap_E_RABToBeSetupListBearerSUReq_t)); + + if (s1ap_encode_s1ap_e_rabtobesetuplistbearersureq(&e_RABToBeSetupListBearerSUReq, &s1ap_E_RABSetupRequestIEs->e_RABToBeSetupListBearerSUReq) < 0) return -1; + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSetupListBearerSUReq, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, + &e_RABToBeSetupListBearerSUReq)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupRequest->s1ap_E_RABSetupRequest_ies.list, ie); + + /* Free any dynamic allocation that is no more used */ + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_E_RABToBeSetupListBearerSUReq, &e_RABToBeSetupListBearerSUReq); + + return 0; +} + +int s1ap_encode_s1ap_enbstatustransferies( + S1ap_ENBStatusTransfer_t *s1ap_ENBStatusTransfer, + S1ap_ENBStatusTransferIEs_t *s1ap_ENBStatusTransferIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_ENBStatusTransfer != NULL); + assert(s1ap_ENBStatusTransferIEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_ENBStatusTransferIEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBStatusTransfer->s1ap_ENBStatusTransfer_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_ENBStatusTransferIEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBStatusTransfer->s1ap_ENBStatusTransfer_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_StatusTransfer_TransparentContainer, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, + &s1ap_ENBStatusTransferIEs->eNB_StatusTransfer_TransparentContainer)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ENBStatusTransfer->s1ap_ENBStatusTransfer_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_resetacknowledgeies( + S1ap_ResetAcknowledge_t *s1ap_ResetAcknowledge, + S1ap_ResetAcknowledgeIEs_t *s1ap_ResetAcknowledgeIEs) { + + S1ap_IE_t *ie; + + assert(s1ap_ResetAcknowledge != NULL); + assert(s1ap_ResetAcknowledgeIEs != NULL); + + /* Optional field */ + if (s1ap_ResetAcknowledgeIEs->presenceMask & S1AP_RESETACKNOWLEDGEIES_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionListResAck, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionListResAck, + &s1ap_ResetAcknowledgeIEs->uE_associatedLogicalS1_ConnectionListResAck)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ResetAcknowledge->s1ap_ResetAcknowledge_ies.list, ie); + } + + /* Optional field */ + if (s1ap_ResetAcknowledgeIEs->presenceMask & S1AP_RESETACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_ResetAcknowledgeIEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_ResetAcknowledge->s1ap_ResetAcknowledge_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_uecontextreleasecomplete_ies( + S1ap_UEContextReleaseComplete_t *s1ap_UEContextReleaseComplete, + S1ap_UEContextReleaseComplete_IEs_t *s1ap_UEContextReleaseComplete_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UEContextReleaseComplete != NULL); + assert(s1ap_UEContextReleaseComplete_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UEContextReleaseComplete_IEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseComplete->s1ap_UEContextReleaseComplete_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UEContextReleaseComplete_IEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseComplete->s1ap_UEContextReleaseComplete_ies.list, ie); + + /* Optional field */ + if (s1ap_UEContextReleaseComplete_IEs->presenceMask & S1AP_UECONTEXTRELEASECOMPLETE_IES_CRITICALITYDIAGNOSTICS_PRESENT) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_CriticalityDiagnostics, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_CriticalityDiagnostics, + &s1ap_UEContextReleaseComplete_IEs->criticalityDiagnostics)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UEContextReleaseComplete->s1ap_UEContextReleaseComplete_ies.list, ie); + } + + return 0; +} + +int s1ap_encode_s1ap_uplinkueassociatedlppatransport_ies( + S1ap_UplinkUEAssociatedLPPaTransport_t *s1ap_UplinkUEAssociatedLPPaTransport, + S1ap_UplinkUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkUEAssociatedLPPaTransport_IEs) { + + S1ap_IE_t *ie; + + assert(s1ap_UplinkUEAssociatedLPPaTransport != NULL); + assert(s1ap_UplinkUEAssociatedLPPaTransport_IEs != NULL); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_MME_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_MME_UE_S1AP_ID, + &s1ap_UplinkUEAssociatedLPPaTransport_IEs->mme_ue_s1ap_id)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkUEAssociatedLPPaTransport->s1ap_UplinkUEAssociatedLPPaTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_eNB_UE_S1AP_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_ENB_UE_S1AP_ID, + &s1ap_UplinkUEAssociatedLPPaTransport_IEs->eNB_UE_S1AP_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkUEAssociatedLPPaTransport->s1ap_UplinkUEAssociatedLPPaTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Routing_ID, + S1ap_Criticality_reject, + &asn_DEF_S1ap_Routing_ID, + &s1ap_UplinkUEAssociatedLPPaTransport_IEs->routing_ID)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkUEAssociatedLPPaTransport->s1ap_UplinkUEAssociatedLPPaTransport_ies.list, ie); + + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_LPPa_PDU, + S1ap_Criticality_reject, + &asn_DEF_S1ap_LPPa_PDU, + &s1ap_UplinkUEAssociatedLPPaTransport_IEs->lpPa_PDU)) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UplinkUEAssociatedLPPaTransport->s1ap_UplinkUEAssociatedLPPaTransport_ies.list, ie); + + return 0; +} + +int s1ap_encode_s1ap_e_rabreleaselistbearerrelcomp( + S1ap_E_RABReleaseListBearerRelComp_t *s1ap_E_RABReleaseListBearerRelComp, + S1ap_E_RABReleaseListBearerRelCompIEs_t *s1ap_E_RABReleaseListBearerRelCompIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABReleaseListBearerRelComp != NULL); + assert(s1ap_E_RABReleaseListBearerRelCompIEs != NULL); + + for (i = 0; i < s1ap_E_RABReleaseListBearerRelCompIEs->s1ap_E_RABReleaseItemBearerRelComp.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABReleaseItemBearerRelComp, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABReleaseItemBearerRelComp, + s1ap_E_RABReleaseListBearerRelCompIEs->s1ap_E_RABReleaseItemBearerRelComp.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABReleaseListBearerRelComp->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_e_rabtobemodifiedlistbearermodreq( + S1ap_E_RABToBeModifiedListBearerModReq_t *s1ap_E_RABToBeModifiedListBearerModReq, + S1ap_E_RABToBeModifiedListBearerModReqIEs_t *s1ap_E_RABToBeModifiedListBearerModReqIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABToBeModifiedListBearerModReq != NULL); + assert(s1ap_E_RABToBeModifiedListBearerModReqIEs != NULL); + + for (i = 0; i < s1ap_E_RABToBeModifiedListBearerModReqIEs->s1ap_E_RABToBeModifiedItemBearerModReq.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeModifiedItemBearerModReq, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeModifiedItemBearerModReq, + s1ap_E_RABToBeModifiedListBearerModReqIEs->s1ap_E_RABToBeModifiedItemBearerModReq.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeModifiedListBearerModReq->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_e_rabtobesetuplistbearersureq( + S1ap_E_RABToBeSetupListBearerSUReq_t *s1ap_E_RABToBeSetupListBearerSUReq, + S1ap_E_RABToBeSetupListBearerSUReqIEs_t *s1ap_E_RABToBeSetupListBearerSUReqIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABToBeSetupListBearerSUReq != NULL); + assert(s1ap_E_RABToBeSetupListBearerSUReqIEs != NULL); + + for (i = 0; i < s1ap_E_RABToBeSetupListBearerSUReqIEs->s1ap_E_RABToBeSetupItemBearerSUReq.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemBearerSUReq, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeSetupItemBearerSUReq, + s1ap_E_RABToBeSetupListBearerSUReqIEs->s1ap_E_RABToBeSetupItemBearerSUReq.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSetupListBearerSUReq->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_e_rabsetuplistctxtsures( + S1ap_E_RABSetupListCtxtSURes_t *s1ap_E_RABSetupListCtxtSURes, + S1ap_E_RABSetupListCtxtSUResIEs_t *s1ap_E_RABSetupListCtxtSUResIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABSetupListCtxtSURes != NULL); + assert(s1ap_E_RABSetupListCtxtSUResIEs != NULL); + + for (i = 0; i < s1ap_E_RABSetupListCtxtSUResIEs->s1ap_E_RABSetupItemCtxtSURes.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABSetupItemCtxtSURes, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABSetupItemCtxtSURes, + s1ap_E_RABSetupListCtxtSUResIEs->s1ap_E_RABSetupItemCtxtSURes.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupListCtxtSURes->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_bearers_subjecttostatustransferlist( + S1ap_Bearers_SubjectToStatusTransfer_List_t *s1ap_Bearers_SubjectToStatusTransfer_List, + S1ap_Bearers_SubjectToStatusTransferListIEs_t *s1ap_Bearers_SubjectToStatusTransferListIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_Bearers_SubjectToStatusTransfer_List != NULL); + assert(s1ap_Bearers_SubjectToStatusTransferListIEs != NULL); + + for (i = 0; i < s1ap_Bearers_SubjectToStatusTransfer_ListIEs->s1ap_Bearers_SubjectToStatusTransfer_Item.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_Bearers_SubjectToStatusTransfer_Item, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_Bearers_SubjectToStatusTransfer_Item, + s1ap_Bearers_SubjectToStatusTransfer_ListIEs->s1ap_Bearers_SubjectToStatusTransfer_Item.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_Bearers_SubjectToStatusTransfer_List->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_e_rablist( + S1ap_E_RABList_t *s1ap_E_RABList, + S1ap_E_RABListIEs_t *s1ap_E_RABListIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABList != NULL); + assert(s1ap_E_RABListIEs != NULL); + + for (i = 0; i < s1ap_E_RABListIEs->s1ap_E_RABItem.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABItem, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABItem, + s1ap_E_RABListIEs->s1ap_E_RABItem.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABList->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_tailist( + S1ap_TAIList_t *s1ap_TAIList, + S1ap_TAIListIEs_t *s1ap_TAIListIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_TAIList != NULL); + assert(s1ap_TAIListIEs != NULL); + + for (i = 0; i < s1ap_TAIListIEs->s1ap_TAIItem.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_TAIItem, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_TAIItem, + s1ap_TAIListIEs->s1ap_TAIItem.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_TAIList->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_ue_associatedlogicals1_connectionlistres( + S1ap_UE_associatedLogicalS1_ConnectionListRes_t *s1ap_UE_associatedLogicalS1_ConnectionListRes, + S1ap_UE_associatedLogicalS1_ConnectionListResIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_UE_associatedLogicalS1_ConnectionListRes != NULL); + assert(s1ap_UE_associatedLogicalS1_ConnectionListResIEs != NULL); + + for (i = 0; i < s1ap_UE_associatedLogicalS1_ConnectionListResIEs->s1ap_UE_associatedLogicalS1_ConnectionItemRes.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionItem, + S1ap_Criticality_reject, + &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, + s1ap_UE_associatedLogicalS1_ConnectionListResIEs->s1ap_UE_associatedLogicalS1_ConnectionItemRes.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UE_associatedLogicalS1_ConnectionListRes->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_e_rabsetuplistbearersures( + S1ap_E_RABSetupListBearerSURes_t *s1ap_E_RABSetupListBearerSURes, + S1ap_E_RABSetupListBearerSUResIEs_t *s1ap_E_RABSetupListBearerSUResIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABSetupListBearerSURes != NULL); + assert(s1ap_E_RABSetupListBearerSUResIEs != NULL); + + for (i = 0; i < s1ap_E_RABSetupListBearerSUResIEs->s1ap_E_RABSetupItemBearerSURes.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABSetupItemBearerSURes, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABSetupItemBearerSURes, + s1ap_E_RABSetupListBearerSUResIEs->s1ap_E_RABSetupItemBearerSURes.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABSetupListBearerSURes->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_e_rabmodifylistbearermodres( + S1ap_E_RABModifyListBearerModRes_t *s1ap_E_RABModifyListBearerModRes, + S1ap_E_RABModifyListBearerModResIEs_t *s1ap_E_RABModifyListBearerModResIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABModifyListBearerModRes != NULL); + assert(s1ap_E_RABModifyListBearerModResIEs != NULL); + + for (i = 0; i < s1ap_E_RABModifyListBearerModResIEs->s1ap_E_RABModifyItemBearerModRes.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABModifyItemBearerModRes, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABModifyItemBearerModRes, + s1ap_E_RABModifyListBearerModResIEs->s1ap_E_RABModifyItemBearerModRes.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABModifyListBearerModRes->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_e_rabtobesetuplistctxtsureq( + S1ap_E_RABToBeSetupListCtxtSUReq_t *s1ap_E_RABToBeSetupListCtxtSUReq, + S1ap_E_RABToBeSetupListCtxtSUReqIEs_t *s1ap_E_RABToBeSetupListCtxtSUReqIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABToBeSetupListCtxtSUReq != NULL); + assert(s1ap_E_RABToBeSetupListCtxtSUReqIEs != NULL); + + for (i = 0; i < s1ap_E_RABToBeSetupListCtxtSUReqIEs->s1ap_E_RABToBeSetupItemCtxtSUReq.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABToBeSetupItemCtxtSUReq, + S1ap_Criticality_reject, + &asn_DEF_S1ap_E_RABToBeSetupItemCtxtSUReq, + s1ap_E_RABToBeSetupListCtxtSUReqIEs->s1ap_E_RABToBeSetupItemCtxtSUReq.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABToBeSetupListCtxtSUReq->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_e_rabinformationlist( + S1ap_E_RABInformationList_t *s1ap_E_RABInformationList, + S1ap_E_RABInformationListIEs_t *s1ap_E_RABInformationListIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_E_RABInformationList != NULL); + assert(s1ap_E_RABInformationListIEs != NULL); + + for (i = 0; i < s1ap_E_RABInformationListIEs->s1ap_E_RABInformationList.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_E_RABInformationListItem, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_E_RABInformationListItem, + s1ap_E_RABInformationListIEs->s1ap_E_RABInformationList.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_E_RABInformationList->list, ie); + } + return 0; +} + +int s1ap_encode_s1ap_ue_associatedlogicals1_connectionlistresack( + S1ap_UE_associatedLogicalS1_ConnectionListResAck_t *s1ap_UE_associatedLogicalS1_ConnectionListResAck, + S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs) { + + int i; + S1ap_IE_t *ie; + + assert(s1ap_UE_associatedLogicalS1_ConnectionListResAck != NULL); + assert(s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs != NULL); + + for (i = 0; i < s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs->s1ap_UE_associatedLogicalS1_ConnectionItemResAck.count; i++) { + if ((ie = s1ap_new_ie(S1ap_ProtocolIE_ID_id_UE_associatedLogicalS1_ConnectionItem, + S1ap_Criticality_ignore, + &asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, + s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs->s1ap_UE_associatedLogicalS1_ConnectionItemResAck.array[i])) == NULL) { + return -1; + } + ASN_SEQUENCE_ADD(&s1ap_UE_associatedLogicalS1_ConnectionListResAck->list, ie); + } + return 0; +} + diff --git a/lib/asn/s1ap_ies_defs.h b/lib/asn/s1ap_ies_defs.h new file mode 100644 index 0000000000..3df8bf7340 --- /dev/null +++ b/lib/asn/s1ap_ies_defs.h @@ -0,0 +1,3291 @@ +/* + * Copyright (c) 2015, EURECOM (www.eurecom.fr) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those + * of the authors and should not be interpreted as representing official policies, + * either expressed or implied, of the FreeBSD Project. + */ + +/******************************************************************************* + * This file had been created by asn1tostruct.py script v1.0.2 + * Please do not modify this file but regenerate it via script. + * Created on: 2017-02-02 21:30:57.599871 by acetcom + * from ['S1AP-PDU.asn'] + ******************************************************************************/ +#include "s1ap_common.h" + +#ifndef S1AP_IES_DEFS_H_ +#define S1AP_IES_DEFS_H_ + +/* Define the version of script used to generate this file */ +#define S1AP_SCRIPT_VERSION (102) + +typedef struct S1ap_E_RABReleaseListBearerRelCompIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABReleaseItemBearerRelComp_s) s1ap_E_RABReleaseItemBearerRelComp; +} S1ap_E_RABReleaseListBearerRelCompIEs_t; + +typedef struct S1ap_E_RABToBeModifiedListBearerModReqIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABToBeModifiedItemBearerModReq_s) s1ap_E_RABToBeModifiedItemBearerModReq; +} S1ap_E_RABToBeModifiedListBearerModReqIEs_t; + +typedef struct S1ap_E_RABToBeSetupListBearerSUReqIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABToBeSetupItemBearerSUReq_s) s1ap_E_RABToBeSetupItemBearerSUReq; +} S1ap_E_RABToBeSetupListBearerSUReqIEs_t; + +typedef struct S1ap_E_RABSetupListCtxtSUResIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABSetupItemCtxtSURes_s) s1ap_E_RABSetupItemCtxtSURes; +} S1ap_E_RABSetupListCtxtSUResIEs_t; + +typedef struct S1ap_Bearers_SubjectToStatusTransferListIEs_s { + A_SEQUENCE_OF(struct S1ap_Bearers_SubjectToStatusTransfer_Item_s) s1ap_Bearers_SubjectToStatusTransfer_Item; +} S1ap_Bearers_SubjectToStatusTransferListIEs_t; + +typedef struct S1ap_E_RABListIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABItem_s) s1ap_E_RABItem; +} S1ap_E_RABListIEs_t; + +typedef struct S1ap_TAIListIEs_s { + A_SEQUENCE_OF(struct S1ap_TAIItem_s) s1ap_TAIItem; +} S1ap_TAIListIEs_t; + +typedef struct S1ap_UE_associatedLogicalS1_ConnectionListResIEs_s { + A_SEQUENCE_OF(struct S1ap_UE_associatedLogicalS1_ConnectionItemRes_s) s1ap_UE_associatedLogicalS1_ConnectionItemRes; +} S1ap_UE_associatedLogicalS1_ConnectionListResIEs_t; + +typedef struct S1ap_E_RABSetupListBearerSUResIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABSetupItemBearerSURes_s) s1ap_E_RABSetupItemBearerSURes; +} S1ap_E_RABSetupListBearerSUResIEs_t; + +typedef struct S1ap_E_RABModifyListBearerModResIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABModifyItemBearerModRes_s) s1ap_E_RABModifyItemBearerModRes; +} S1ap_E_RABModifyListBearerModResIEs_t; + +typedef struct S1ap_E_RABToBeSetupListCtxtSUReqIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABToBeSetupItemCtxtSUReq_s) s1ap_E_RABToBeSetupItemCtxtSUReq; +} S1ap_E_RABToBeSetupListCtxtSUReqIEs_t; + +typedef struct S1ap_E_RABInformationListIEs_s { + A_SEQUENCE_OF(struct S1ap_E_RABInformationList_s) s1ap_E_RABInformationList; +} S1ap_E_RABInformationListIEs_t; + +typedef struct S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_s { + A_SEQUENCE_OF(struct S1ap_UE_associatedLogicalS1_ConnectionItemResAck_s) s1ap_UE_associatedLogicalS1_ConnectionItemResAck; +} S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_t; + +typedef struct S1ap_E_RABFailedtoSetupItemHOReqAckIEs_s { + S1ap_E_RABFailedToSetupItemHOReqAck_t e_RABFailedtoSetupItemHOReqAck; +} S1ap_E_RABFailedtoSetupItemHOReqAckIEs_t; + +typedef struct S1ap_DeactivateTraceIEs_s { + 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_DeactivateTraceIEs_t; + +typedef struct S1ap_E_RABReleaseItemBearerRelCompIEs_s { + S1ap_E_RABReleaseItemBearerRelComp_t e_RABReleaseItemBearerRelComp; +} S1ap_E_RABReleaseItemBearerRelCompIEs_t; + +typedef struct S1ap_ENBDirectInformationTransferIEs_s { + S1ap_Inter_SystemInformationTransferType_t inter_SystemInformationTransferTypeEDT; +} S1ap_ENBDirectInformationTransferIEs_t; + +#define S1AP_E_RABRELEASERESPONSEIES_E_RABRELEASELISTBEARERRELCOMP_PRESENT (1 << 0) +#define S1AP_E_RABRELEASERESPONSEIES_E_RABFAILEDTORELEASELIST_PRESENT (1 << 1) +#define S1AP_E_RABRELEASERESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 2) + +typedef struct S1ap_E_RABReleaseResponseIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_E_RABReleaseListBearerRelCompIEs_t e_RABReleaseListBearerRelComp; ///< Optional field + S1ap_E_RABListIEs_t e_RABFailedToReleaseList; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_E_RABReleaseResponseIEs_t; + +typedef struct S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_s { + S1ap_Routing_ID_t routing_ID; + S1ap_LPPa_PDU_t lpPa_PDU; +} S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_t; + +typedef struct S1ap_E_RABToBeSetupItemHOReqIEs_s { + S1ap_E_RABToBeSetupItemHOReq_t e_RABToBeSetupItemHOReq; +} S1ap_E_RABToBeSetupItemHOReqIEs_t; + +typedef struct S1ap_TraceStartIEs_s { + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_TraceActivation_t traceActivation; +} S1ap_TraceStartIEs_t; + +#define S1AP_WRITEREPLACEWARNINGRESPONSEIES_BROADCASTCOMPLETEDAREALIST_PRESENT (1 << 0) +#define S1AP_WRITEREPLACEWARNINGRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 1) + +typedef struct S1ap_WriteReplaceWarningResponseIEs_s { + uint16_t presenceMask; + S1ap_MessageIdentifier_t messageIdentifier; + S1ap_SerialNumber_t serialNumber; + S1ap_BroadcastCompletedAreaList_t broadcastCompletedAreaList; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_WriteReplaceWarningResponseIEs_t; + +typedef struct S1ap_HandoverCancelIEs_s { + 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_HandoverCancelIEs_t; + +#define S1AP_HANDOVERPREPARATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_HandoverPreparationFailureIEs_s { + uint16_t presenceMask; + 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; ///< Optional field +} S1ap_HandoverPreparationFailureIEs_t; + +typedef struct S1ap_E_RABToBeModifiedItemBearerModReqIEs_s { + S1ap_E_RABToBeModifiedItemBearerModReq_t e_RABToBeModifiedItemBearerModReq; +} S1ap_E_RABToBeModifiedItemBearerModReqIEs_t; + +#define S1AP_UECONTEXTRELEASEREQUEST_IES_GWCONTEXTRELEASEINDICATION_PRESENT (1 << 0) + +typedef struct S1ap_UEContextReleaseRequest_IEs_s { + uint16_t presenceMask; + 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; ///< Optional field +} S1ap_UEContextReleaseRequest_IEs_t; + +typedef struct S1ap_E_RABAdmittedItemIEs_s { + S1ap_E_RABAdmittedItem_t e_RABAdmittedItem; +} S1ap_E_RABAdmittedItemIEs_t; + +#define S1AP_INITIALUEMESSAGE_IES_S_TMSI_PRESENT (1 << 0) +#define S1AP_INITIALUEMESSAGE_IES_CSG_ID_PRESENT (1 << 1) +#define S1AP_INITIALUEMESSAGE_IES_GUMMEI_ID_PRESENT (1 << 2) +#define S1AP_INITIALUEMESSAGE_IES_CELLACCESSMODE_PRESENT (1 << 3) +#define S1AP_INITIALUEMESSAGE_IES_GW_S1AP_TRANSPORTLAYERADDRESS_PRESENT (1 << 4) +#define S1AP_INITIALUEMESSAGE_IES_RELAYNODE_INDICATOR_PRESENT (1 << 5) + +typedef struct S1ap_InitialUEMessage_IEs_s { + uint16_t presenceMask; + 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; ///< Optional field + S1ap_CSG_Id_t csG_Id; ///< Optional field + S1ap_GUMMEI_t gummei_id; ///< Optional field + S1ap_CellAccessMode_t cellAccessMode; ///< Optional field + S1ap_TransportLayerAddress_t gW_S1ap_TransportLayerAddress; ///< Optional field + S1ap_RelayNode_Indicator_t relayNode_Indicator; ///< Optional field +} S1ap_InitialUEMessage_IEs_t; + +#define S1AP_KILLREQUESTIES_WARNINGAREALIST_PRESENT (1 << 0) + +typedef struct S1ap_KillRequestIEs_s { + uint16_t presenceMask; + S1ap_MessageIdentifier_t messageIdentifier; + S1ap_SerialNumber_t serialNumber; + S1ap_WarningAreaList_t warningAreaList; ///< Optional field +} S1ap_KillRequestIEs_t; + +#define S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGAREALIST_PRESENT (1 << 0) +#define S1AP_WRITEREPLACEWARNINGREQUESTIES_EXTENDEDREPETITIONPERIOD_PRESENT (1 << 1) +#define S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGTYPE_PRESENT (1 << 2) +#define S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGSECURITYINFO_PRESENT (1 << 3) +#define S1AP_WRITEREPLACEWARNINGREQUESTIES_DATACODINGSCHEME_PRESENT (1 << 4) +#define S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGMESSAGECONTENTS_PRESENT (1 << 5) +#define S1AP_WRITEREPLACEWARNINGREQUESTIES_CONCURRENTWARNINGMESSAGEINDICATOR_PRESENT (1 << 6) + +typedef struct S1ap_WriteReplaceWarningRequestIEs_s { + uint16_t presenceMask; + S1ap_MessageIdentifier_t messageIdentifier; + S1ap_SerialNumber_t serialNumber; + S1ap_WarningAreaList_t warningAreaList; ///< Optional field + S1ap_RepetitionPeriod_t repetitionPeriod; + S1ap_ExtendedRepetitionPeriod_t extendedRepetitionPeriod; ///< Optional field + S1ap_NumberofBroadcastRequest_t numberofBroadcastRequest; + S1ap_WarningType_t warningType; ///< Optional field + S1ap_WarningSecurityInfo_t warningSecurityInfo; ///< Optional field + S1ap_DataCodingScheme_t dataCodingScheme; ///< Optional field + S1ap_WarningMessageContents_t warningMessageContents; ///< Optional field + S1ap_ConcurrentWarningMessageIndicator_t concurrentWarningMessageIndicator; ///< Optional field +} S1ap_WriteReplaceWarningRequestIEs_t; + +typedef struct S1ap_UECapabilityInfoIndicationIEs_s { + 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_UECapabilityInfoIndicationIEs_t; + +typedef struct S1ap_E_RABToBeSetupItemBearerSUReqIEs_s { + S1ap_E_RABToBeSetupItemBearerSUReq_t e_RABToBeSetupItemBearerSUReq; +} S1ap_E_RABToBeSetupItemBearerSUReqIEs_t; + +typedef struct S1ap_E_RABDataForwardingItemIEs_s { + S1ap_E_RABDataForwardingItem_t e_RABDataForwardingItem; +} S1ap_E_RABDataForwardingItemIEs_t; + +typedef struct S1ap_LocationReportingFailureIndicationIEs_s { + 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_LocationReportingFailureIndicationIEs_t; + +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_TRACEACTIVATION_PRESENT (1 << 0) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT (1 << 1) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_UERADIOCAPABILITY_PRESENT (1 << 2) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT (1 << 3) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_CSFALLBACKINDICATOR_PRESENT (1 << 4) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT (1 << 5) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT (1 << 6) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_REGISTEREDLAI_PRESENT (1 << 7) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_GUMMEI_ID_PRESENT (1 << 8) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_MME_UE_S1AP_ID_2_PRESENT (1 << 9) +#define S1AP_INITIALCONTEXTSETUPREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT (1 << 10) + +typedef struct S1ap_InitialContextSetupRequestIEs_s { + uint16_t presenceMask; + 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_RABToBeSetupListCtxtSUReqIEs_t e_RABToBeSetupListCtxtSUReq; + S1ap_UESecurityCapabilities_t ueSecurityCapabilities; + S1ap_SecurityKey_t securityKey; + S1ap_TraceActivation_t traceActivation; ///< Optional field + S1ap_HandoverRestrictionList_t handoverRestrictionList; ///< Optional field + S1ap_UERadioCapability_t ueRadioCapability; ///< Optional field + S1ap_SubscriberProfileIDforRFP_t subscriberProfileIDforRFP; ///< Optional field + S1ap_CSFallbackIndicator_t csFallbackIndicator; ///< Optional field + S1ap_SRVCCOperationPossible_t srvccOperationPossible; ///< Optional field + S1ap_CSGMembershipStatus_t csgMembershipStatus; ///< Optional field + S1ap_LAI_t registeredLAI; ///< Optional field + S1ap_GUMMEI_t gummei_id; ///< Optional field + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id_2; ///< Optional field + S1ap_ManagementBasedMDTAllowed_t managementBasedMDTAllowed; ///< Optional field +} S1ap_InitialContextSetupRequestIEs_t; + +typedef struct S1ap_LocationReportIEs_s { + 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; +} S1ap_LocationReportIEs_t; + +#define S1AP_UPLINKNASTRANSPORT_IES_GW_S1AP_TRANSPORTLAYERADDRESS_PRESENT (1 << 0) + +typedef struct S1ap_UplinkNASTransport_IEs_s { + uint16_t presenceMask; + 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 gW_S1ap_TransportLayerAddress; ///< Optional field +} S1ap_UplinkNASTransport_IEs_t; + +#define S1AP_UECONTEXTMODIFICATIONRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_UEContextModificationResponseIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_UEContextModificationResponseIEs_t; + +#define S1AP_UECONTEXTMODIFICATIONREQUESTIES_SECURITYKEY_PRESENT (1 << 0) +#define S1AP_UECONTEXTMODIFICATIONREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT (1 << 1) +#define S1AP_UECONTEXTMODIFICATIONREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT (1 << 2) +#define S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSFALLBACKINDICATOR_PRESENT (1 << 3) +#define S1AP_UECONTEXTMODIFICATIONREQUESTIES_UESECURITYCAPABILITIES_PRESENT (1 << 4) +#define S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT (1 << 5) +#define S1AP_UECONTEXTMODIFICATIONREQUESTIES_REGISTEREDLAI_PRESENT (1 << 6) + +typedef struct S1ap_UEContextModificationRequestIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_SecurityKey_t securityKey; ///< Optional field + S1ap_SubscriberProfileIDforRFP_t subscriberProfileIDforRFP; ///< Optional field + S1ap_UEAggregateMaximumBitrate_t uEaggregateMaximumBitrate; ///< Optional field + S1ap_CSFallbackIndicator_t csFallbackIndicator; ///< Optional field + S1ap_UESecurityCapabilities_t ueSecurityCapabilities; ///< Optional field + S1ap_CSGMembershipStatus_t csgMembershipStatus; ///< Optional field + S1ap_LAI_t registeredLAI; ///< Optional field +} S1ap_UEContextModificationRequestIEs_t; + +typedef struct S1ap_LocationReportingControlIEs_s { + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_RequestType_t requestType; +} S1ap_LocationReportingControlIEs_t; + +#define S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000HOREQUIREDINDICATION_PRESENT (1 << 0) +#define S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXSRVCCINFO_PRESENT (1 << 1) +#define S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXRAND_PRESENT (1 << 2) +#define S1AP_UPLINKS1CDMA2000TUNNELINGIES_EUTRANROUNDTRIPDELAYESTIMATIONINFO_PRESENT (1 << 3) + +typedef struct S1ap_UplinkS1cdma2000tunnelingIEs_s { + uint16_t presenceMask; + 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; ///< Optional field + S1ap_Cdma2000OneXSRVCCInfo_t cdma2000OneXSRVCCInfo; ///< Optional field + S1ap_Cdma2000OneXRAND_t cdma2000OneXRAND; ///< Optional field + S1ap_Cdma2000PDU_t cdma2000PDU; + S1ap_EUTRANRoundTripDelayEstimationInfo_t eutranRoundTripDelayEstimationInfo; ///< Optional field +} S1ap_UplinkS1cdma2000tunnelingIEs_t; + +#define S1AP_HANDOVERREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT (1 << 0) +#define S1AP_HANDOVERREQUESTIES_TRACEACTIVATION_PRESENT (1 << 1) +#define S1AP_HANDOVERREQUESTIES_REQUESTTYPE_PRESENT (1 << 2) +#define S1AP_HANDOVERREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT (1 << 3) +#define S1AP_HANDOVERREQUESTIES_CSG_ID_PRESENT (1 << 4) +#define S1AP_HANDOVERREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT (1 << 5) +#define S1AP_HANDOVERREQUESTIES_GUMMEI_ID_PRESENT (1 << 6) +#define S1AP_HANDOVERREQUESTIES_MME_UE_S1AP_ID_2_PRESENT (1 << 7) +#define S1AP_HANDOVERREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT (1 << 8) + +typedef struct S1ap_HandoverRequestIEs_s { + uint16_t presenceMask; + 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; ///< Optional field + S1ap_TraceActivation_t traceActivation; ///< Optional field + S1ap_RequestType_t requestType; ///< Optional field + S1ap_SRVCCOperationPossible_t srvccOperationPossible; ///< Optional field + S1ap_SecurityContext_t securityContext; + S1ap_CSG_Id_t csG_Id; ///< Optional field + S1ap_CSGMembershipStatus_t csgMembershipStatus; ///< Optional field + S1ap_GUMMEI_t gummei_id; ///< Optional field + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id_2; ///< Optional field + S1ap_ManagementBasedMDTAllowed_t managementBasedMDTAllowed; ///< Optional field +} S1ap_HandoverRequestIEs_t; + +#define S1AP_HANDOVERREQUIREDIES_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT (1 << 0) +#define S1AP_HANDOVERREQUIREDIES_SRVCCHOINDICATION_PRESENT (1 << 1) +#define S1AP_HANDOVERREQUIREDIES_SOURCE_TOTARGET_TRANSPARENTCONTAINER_SECONDARY_PRESENT (1 << 2) +#define S1AP_HANDOVERREQUIREDIES_MSCLASSMARK2_PRESENT (1 << 3) +#define S1AP_HANDOVERREQUIREDIES_MSCLASSMARK3_PRESENT (1 << 4) +#define S1AP_HANDOVERREQUIREDIES_CSG_ID_PRESENT (1 << 5) +#define S1AP_HANDOVERREQUIREDIES_CELLACCESSMODE_PRESENT (1 << 6) +#define S1AP_HANDOVERREQUIREDIES_PS_SERVICENOTAVAILABLE_PRESENT (1 << 7) + +typedef struct S1ap_HandoverRequiredIEs_s { + uint16_t presenceMask; + 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; ///< Optional field + S1ap_SRVCCHOIndication_t srvcchoIndication; ///< Optional field + S1ap_Source_ToTarget_TransparentContainer_t source_ToTarget_TransparentContainer; + S1ap_Source_ToTarget_TransparentContainer_t source_ToTarget_TransparentContainer_Secondary; ///< Optional field + S1ap_MSClassmark2_t msClassmark2; ///< Conditional field + S1ap_MSClassmark3_t msClassmark3; ///< Conditional field + S1ap_CSG_Id_t csG_Id; ///< Optional field + S1ap_CellAccessMode_t cellAccessMode; ///< Optional field + S1ap_PS_ServiceNotAvailable_t pS_ServiceNotAvailable; ///< Optional field +} S1ap_HandoverRequiredIEs_t; + +typedef struct S1ap_E_RABToBeSwitchedDLItemIEs_s { + S1ap_E_RABToBeSwitchedDLItem_t e_RABToBeSwitchedDLItem; +} S1ap_E_RABToBeSwitchedDLItemIEs_t; + +#define S1AP_MMECONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_MMEConfigurationUpdateAcknowledgeIEs_s { + uint16_t presenceMask; + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_MMEConfigurationUpdateAcknowledgeIEs_t; + +#define S1AP_KILLRESPONSEIES_BROADCASTCANCELLEDAREALIST_PRESENT (1 << 0) +#define S1AP_KILLRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 1) + +typedef struct S1ap_KillResponseIEs_s { + uint16_t presenceMask; + S1ap_MessageIdentifier_t messageIdentifier; + S1ap_SerialNumber_t serialNumber; + S1ap_BroadcastCancelledAreaList_t broadcastCancelledAreaList; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_KillResponseIEs_t; + +typedef struct S1ap_MMEStatusTransferIEs_s { + 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; +} S1ap_MMEStatusTransferIEs_t; + +#define S1AP_MMECONFIGURATIONUPDATEIES_MMENAME_PRESENT (1 << 0) +#define S1AP_MMECONFIGURATIONUPDATEIES_SERVEDGUMMEIS_PRESENT (1 << 1) +#define S1AP_MMECONFIGURATIONUPDATEIES_RELATIVEMMECAPACITY_PRESENT (1 << 2) + +typedef struct S1ap_MMEConfigurationUpdateIEs_s { + uint16_t presenceMask; + S1ap_MMEname_t mmEname; ///< Optional field + S1ap_ServedGUMMEIs_t servedGUMMEIs; ///< Optional field + S1ap_RelativeMMECapacity_t relativeMMECapacity; ///< Optional field +} S1ap_MMEConfigurationUpdateIEs_t; + +#define S1AP_E_RABMODIFYREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT (1 << 0) + +typedef struct S1ap_E_RABModifyRequestIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_UEAggregateMaximumBitrate_t uEaggregateMaximumBitrate; ///< Optional field + S1ap_E_RABToBeModifiedListBearerModReqIEs_t e_RABToBeModifiedListBearerModReq; +} S1ap_E_RABModifyRequestIEs_t; + +typedef struct S1ap_E_RABSetupItemCtxtSUResIEs_s { + S1ap_E_RABSetupItemCtxtSURes_t e_RABSetupItemCtxtSURes; +} S1ap_E_RABSetupItemCtxtSUResIEs_t; + +typedef struct S1ap_E_RABToBeSwitchedULItemIEs_s { + S1ap_E_RABToBeSwitchedULItem_t e_RABToBeSwitchedULItem; +} S1ap_E_RABToBeSwitchedULItemIEs_t; + +#define S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT (1 << 0) +#define S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 1) + +typedef struct S1ap_ENBConfigurationUpdateFailureIEs_s { + uint16_t presenceMask; + S1ap_Cause_t cause; + S1ap_TimeToWait_t timeToWait; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_ENBConfigurationUpdateFailureIEs_t; + +typedef struct S1ap_ResetIEs_s { + S1ap_Cause_t cause; + S1ap_ResetType_t resetType; +} S1ap_ResetIEs_t; + +typedef struct S1ap_Bearers_SubjectToStatusTransfer_ItemIEs_s { + S1ap_Bearers_SubjectToStatusTransfer_Item_t bearers_SubjectToStatusTransfer_Item; +} S1ap_Bearers_SubjectToStatusTransfer_ItemIEs_t; + +typedef struct S1ap_E_RABItemIEs_s { + S1ap_E_RABItem_t e_RABItem; +} S1ap_E_RABItemIEs_t; + +#define S1AP_S1SETUPRESPONSEIES_MMENAME_PRESENT (1 << 0) +#define S1AP_S1SETUPRESPONSEIES_MMERELAYSUPPORTINDICATOR_PRESENT (1 << 1) +#define S1AP_S1SETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 2) + +typedef struct S1ap_S1SetupResponseIEs_s { + uint16_t presenceMask; + S1ap_MMEname_t mmEname; ///< Optional field + S1ap_ServedGUMMEIs_t servedGUMMEIs; + S1ap_RelativeMMECapacity_t relativeMMECapacity; + S1ap_MMERelaySupportIndicator_t mmeRelaySupportIndicator; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_S1SetupResponseIEs_t; + +#define S1AP_PAGINGIES_PAGINGDRX_PRESENT (1 << 0) +#define S1AP_PAGINGIES_CSG_IDLIST_PRESENT (1 << 1) +#define S1AP_PAGINGIES_PAGINGPRIORITY_PRESENT (1 << 2) + +typedef struct S1ap_PagingIEs_s { + uint16_t presenceMask; + S1ap_UEIdentityIndexValue_t ueIdentityIndexValue; + S1ap_UEPagingID_t uePagingID; + S1ap_PagingDRX_t pagingDRX; ///< Optional field + S1ap_CNDomain_t cnDomain; + S1ap_TAIListIEs_t taiList; + S1ap_CSG_IdList_t csG_IdList; ///< Optional field + S1ap_PagingPriority_t pagingPriority; ///< Optional field +} S1ap_PagingIEs_t; + +#define S1AP_ENBCONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_ENBConfigurationUpdateAcknowledgeIEs_s { + uint16_t presenceMask; + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_ENBConfigurationUpdateAcknowledgeIEs_t; + +#define S1AP_E_RABRELEASECOMMANDIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT (1 << 0) +#define S1AP_E_RABRELEASECOMMANDIES_NAS_PDU_PRESENT (1 << 1) + +typedef struct S1ap_E_RABReleaseCommandIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_UEAggregateMaximumBitrate_t uEaggregateMaximumBitrate; ///< Optional field + S1ap_E_RABListIEs_t e_RABToBeReleasedList; + S1ap_NAS_PDU_t nas_pdu; ///< Optional field +} S1ap_E_RABReleaseCommandIEs_t; + +#define S1AP_PATHSWITCHREQUESTFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_PathSwitchRequestFailureIEs_s { + uint16_t presenceMask; + 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; ///< Optional field +} S1ap_PathSwitchRequestFailureIEs_t; + +#define S1AP_E_RABMODIFYRESPONSEIES_E_RABMODIFYLISTBEARERMODRES_PRESENT (1 << 0) +#define S1AP_E_RABMODIFYRESPONSEIES_E_RABFAILEDTOMODIFYLIST_PRESENT (1 << 1) +#define S1AP_E_RABMODIFYRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 2) + +typedef struct S1ap_E_RABModifyResponseIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_E_RABModifyListBearerModResIEs_t e_RABModifyListBearerModRes; ///< Optional field + S1ap_E_RABListIEs_t e_RABFailedToModifyList; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_E_RABModifyResponseIEs_t; + +typedef struct S1ap_HandoverNotifyIEs_s { + 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_HandoverNotifyIEs_t; + +#define S1AP_HANDOVERCANCELACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_HandoverCancelAcknowledgeIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_HandoverCancelAcknowledgeIEs_t; + +#define S1AP_INITIALCONTEXTSETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_InitialContextSetupFailureIEs_s { + uint16_t presenceMask; + 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; ///< Optional field +} S1ap_InitialContextSetupFailureIEs_t; + +#define S1AP_HANDOVERCOMMANDIES_E_RABSUBJECTTODATAFORWARDINGLIST_PRESENT (1 << 0) +#define S1AP_HANDOVERCOMMANDIES_E_RABTORELEASELISTHOCMD_PRESENT (1 << 1) +#define S1AP_HANDOVERCOMMANDIES_TARGET_TOSOURCE_TRANSPARENTCONTAINER_SECONDARY_PRESENT (1 << 2) +#define S1AP_HANDOVERCOMMANDIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 3) + +typedef struct S1ap_HandoverCommandIEs_s { + uint16_t presenceMask; + 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_E_RABSubjecttoDataForwardingList_t e_RABSubjecttoDataForwardingList; ///< Optional field + S1ap_E_RABListIEs_t e_RABtoReleaseListHOCmd; ///< Optional field + S1ap_Target_ToSource_TransparentContainer_t target_ToSource_TransparentContainer; + S1ap_Target_ToSource_TransparentContainer_t target_ToSource_TransparentContainer_Secondary; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_HandoverCommandIEs_t; + +typedef struct S1ap_MMEDirectInformationTransferIEs_s { + S1ap_Inter_SystemInformationTransferType_t inter_SystemInformationTransferTypeMDT; +} S1ap_MMEDirectInformationTransferIEs_t; + +#define S1AP_ERRORINDICATIONIES_MME_UE_S1AP_ID_PRESENT (1 << 0) +#define S1AP_ERRORINDICATIONIES_ENB_UE_S1AP_ID_PRESENT (1 << 1) +#define S1AP_ERRORINDICATIONIES_CAUSE_PRESENT (1 << 2) +#define S1AP_ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 3) + +typedef struct S1ap_ErrorIndicationIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; ///< Optional field + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; ///< Optional field + S1ap_Cause_t cause; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_ErrorIndicationIEs_t; + +typedef struct S1ap_TAIItemIEs_s { + S1ap_TAIItem_t taiItem; +} S1ap_TAIItemIEs_t; + +#define S1AP_OVERLOADSTARTIES_GUMMEILIST_PRESENT (1 << 0) +#define S1AP_OVERLOADSTARTIES_TRAFFICLOADREDUCTIONINDICATION_PRESENT (1 << 1) + +typedef struct S1ap_OverloadStartIEs_s { + uint16_t presenceMask; + S1ap_OverloadResponse_t overloadResponse; + S1ap_GUMMEIList_t gummeiList; ///< Optional field + S1ap_TrafficLoadReductionIndication_t trafficLoadReductionIndication; ///< Optional field +} S1ap_OverloadStartIEs_t; + +typedef struct S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_s { + S1ap_Routing_ID_t routing_ID; + S1ap_LPPa_PDU_t lpPa_PDU; +} S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_t; + +#define S1AP_HANDOVERREQUESTACKNOWLEDGEIES_E_RABFAILEDTOSETUPLISTHOREQACK_PRESENT (1 << 0) +#define S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CSG_ID_PRESENT (1 << 1) +#define S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 2) + +typedef struct S1ap_HandoverRequestAcknowledgeIEs_s { + uint16_t presenceMask; + 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; ///< Optional field + S1ap_Target_ToSource_TransparentContainer_t target_ToSource_TransparentContainer; + S1ap_CSG_Id_t csG_Id; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_HandoverRequestAcknowledgeIEs_t; + +typedef struct S1ap_DownlinkUEAssociatedLPPaTransport_IEs_s { + 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; +} S1ap_DownlinkUEAssociatedLPPaTransport_IEs_t; + +#define S1AP_UECONTEXTMODIFICATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_UEContextModificationFailureIEs_s { + uint16_t presenceMask; + 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; ///< Optional field +} S1ap_UEContextModificationFailureIEs_t; + +#define S1AP_MMECONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERMCT_PRESENT (1 << 0) + +typedef struct S1ap_MMEConfigurationTransferIEs_s { + uint16_t presenceMask; + S1ap_SONConfigurationTransfer_t sonConfigurationTransferMCT; ///< Optional field +} S1ap_MMEConfigurationTransferIEs_t; + +#define S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT (1 << 0) +#define S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBESWITCHEDULLIST_PRESENT (1 << 1) +#define S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBERELEASEDLIST_PRESENT (1 << 2) +#define S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 3) +#define S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_MME_UE_S1AP_ID_2_PRESENT (1 << 4) + +typedef struct S1ap_PathSwitchRequestAcknowledgeIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_UEAggregateMaximumBitrate_t uEaggregateMaximumBitrate; ///< Optional field + S1ap_E_RABToBeSwitchedULList_t e_RABToBeSwitchedULList; ///< Optional field + S1ap_E_RABListIEs_t e_RABToBeReleasedList; ///< Optional field + S1ap_SecurityContext_t securityContext; + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id_2; ///< Optional field +} S1ap_PathSwitchRequestAcknowledgeIEs_t; + +typedef struct S1ap_UE_associatedLogicalS1_ConnectionItemRes_s { + S1ap_UE_associatedLogicalS1_ConnectionItem_t uE_associatedLogicalS1_ConnectionItem; +} S1ap_UE_associatedLogicalS1_ConnectionItemRes_t; + +#define S1AP_S1SETUPFAILUREIES_TIMETOWAIT_PRESENT (1 << 0) +#define S1AP_S1SETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 1) + +typedef struct S1ap_S1SetupFailureIEs_s { + uint16_t presenceMask; + S1ap_Cause_t cause; + S1ap_TimeToWait_t timeToWait; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_S1SetupFailureIEs_t; + +#define S1AP_MMECONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT (1 << 0) +#define S1AP_MMECONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 1) + +typedef struct S1ap_MMEConfigurationUpdateFailureIEs_s { + uint16_t presenceMask; + S1ap_Cause_t cause; + S1ap_TimeToWait_t timeToWait; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_MMEConfigurationUpdateFailureIEs_t; + +#define S1AP_INITIALCONTEXTSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTCTXTSURES_PRESENT (1 << 0) +#define S1AP_INITIALCONTEXTSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 1) + +typedef struct S1ap_InitialContextSetupResponseIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_E_RABSetupListCtxtSUResIEs_t e_RABSetupListCtxtSURes; + S1ap_E_RABListIEs_t e_RABFailedToSetupListCtxtSURes; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_InitialContextSetupResponseIEs_t; + +#define S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_E_RABSUBJECTTODATAFORWARDINGLIST_PRESENT (1 << 0) +#define S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_CDMA2000HOSTATUS_PRESENT (1 << 1) + +typedef struct S1ap_DownlinkS1cdma2000tunnelingIEs_s { + uint16_t presenceMask; + 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; ///< Optional field + S1ap_Cdma2000HOStatus_t cdma2000HOStatus; ///< Optional field + S1ap_Cdma2000RATType_t cdma2000RATType; + S1ap_Cdma2000PDU_t cdma2000PDU; +} S1ap_DownlinkS1cdma2000tunnelingIEs_t; + +#define S1AP_OVERLOADSTOPIES_GUMMEILIST_PRESENT (1 << 0) + +typedef struct S1ap_OverloadStopIEs_s { + uint16_t presenceMask; + S1ap_GUMMEIList_t gummeiList; ///< Optional field +} S1ap_OverloadStopIEs_t; + +typedef struct S1ap_E_RABSetupItemBearerSUResIEs_s { + S1ap_E_RABSetupItemBearerSURes_t e_RABSetupItemBearerSURes; +} S1ap_E_RABSetupItemBearerSUResIEs_t; + +typedef struct S1ap_E_RABModifyItemBearerModResIEs_s { + S1ap_E_RABModifyItemBearerModRes_t e_RABModifyItemBearerModRes; +} S1ap_E_RABModifyItemBearerModResIEs_t; + +typedef struct S1ap_E_RABToBeSetupItemCtxtSUReqIEs_s { + S1ap_E_RABToBeSetupItemCtxtSUReq_t e_RABToBeSetupItemCtxtSUReq; +} S1ap_E_RABToBeSetupItemCtxtSUReqIEs_t; + +#define S1AP_ENBCONFIGURATIONUPDATEIES_ENBNAME_PRESENT (1 << 0) +#define S1AP_ENBCONFIGURATIONUPDATEIES_SUPPORTEDTAS_PRESENT (1 << 1) +#define S1AP_ENBCONFIGURATIONUPDATEIES_CSG_IDLIST_PRESENT (1 << 2) +#define S1AP_ENBCONFIGURATIONUPDATEIES_DEFAULTPAGINGDRX_PRESENT (1 << 3) + +typedef struct S1ap_ENBConfigurationUpdateIEs_s { + uint16_t presenceMask; + S1ap_ENBname_t eNBname; ///< Optional field + S1ap_SupportedTAs_t supportedTAs; ///< Optional field + S1ap_CSG_IdList_t csG_IdList; ///< Optional field + S1ap_PagingDRX_t defaultPagingDRX; ///< Optional field +} S1ap_ENBConfigurationUpdateIEs_t; + +typedef struct S1ap_TraceFailureIndicationIEs_s { + 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; +} S1ap_TraceFailureIndicationIEs_t; + +typedef struct S1ap_E_RABInformationListIEs_s { + S1ap_E_RABInformationListItem_t e_RABInformationListItem; +} S1ap_E_RABInformationListIEs_t; + +#define S1AP_ENBCONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERECT_PRESENT (1 << 0) + +typedef struct S1ap_ENBConfigurationTransferIEs_s { + uint16_t presenceMask; + S1ap_SONConfigurationTransfer_t sonConfigurationTransferECT; ///< Optional field +} S1ap_ENBConfigurationTransferIEs_t; + +#define S1AP_HANDOVERFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_HandoverFailureIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_Cause_t cause; + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_HandoverFailureIEs_t; + +typedef struct S1ap_UE_associatedLogicalS1_ConnectionItemResAck_s { + S1ap_UE_associatedLogicalS1_ConnectionItem_t uE_associatedLogicalS1_ConnectionItem; +} S1ap_UE_associatedLogicalS1_ConnectionItemResAck_t; + +#define S1AP_E_RABSETUPRESPONSEIES_E_RABSETUPLISTBEARERSURES_PRESENT (1 << 0) +#define S1AP_E_RABSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTBEARERSURES_PRESENT (1 << 1) +#define S1AP_E_RABSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 2) + +typedef struct S1ap_E_RABSetupResponseIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_E_RABSetupListBearerSUResIEs_t e_RABSetupListBearerSURes; ///< Optional field + S1ap_E_RABListIEs_t e_RABFailedToSetupListBearerSURes; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_E_RABSetupResponseIEs_t; + +typedef struct S1ap_UEContextReleaseCommand_IEs_s { + S1ap_UE_S1AP_IDs_t uE_S1AP_IDs; + S1ap_Cause_t cause; +} S1ap_UEContextReleaseCommand_IEs_t; + +#define S1AP_PATHSWITCHREQUESTIES_CSG_ID_PRESENT (1 << 0) +#define S1AP_PATHSWITCHREQUESTIES_CELLACCESSMODE_PRESENT (1 << 1) +#define S1AP_PATHSWITCHREQUESTIES_SOURCEMME_S1AP_GUMMEI_PRESENT (1 << 2) + +typedef struct S1ap_PathSwitchRequestIEs_s { + uint16_t presenceMask; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_E_RABToBeSwitchedDLList_t e_RABToBeSwitchedDLList; + S1ap_MME_UE_S1AP_ID_t sourceMME_UE_S1AP_ID; + S1ap_EUTRAN_CGI_t eutran_cgi; + S1ap_TAI_t tai; + S1ap_UESecurityCapabilities_t ueSecurityCapabilities; + S1ap_CSG_Id_t csG_Id; ///< Optional field + S1ap_CellAccessMode_t cellAccessMode; ///< Optional field + S1ap_GUMMEI_t sourceMME_S1ap_GUMMEI; ///< Optional field +} S1ap_PathSwitchRequestIEs_t; + +#define S1AP_DOWNLINKNASTRANSPORT_IES_HANDOVERRESTRICTIONLIST_PRESENT (1 << 0) +#define S1AP_DOWNLINKNASTRANSPORT_IES_SUBSCRIBERPROFILEIDFORRFP_PRESENT (1 << 1) + +typedef struct S1ap_DownlinkNASTransport_IEs_s { + uint16_t presenceMask; + 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; ///< Optional field + S1ap_SubscriberProfileIDforRFP_t subscriberProfileIDforRFP; ///< Optional field +} S1ap_DownlinkNASTransport_IEs_t; + +typedef struct S1ap_E_RABReleaseIndicationIEs_s { + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_E_RABListIEs_t e_RABReleasedList; +} S1ap_E_RABReleaseIndicationIEs_t; + +#define S1AP_S1SETUPREQUESTIES_ENBNAME_PRESENT (1 << 0) +#define S1AP_S1SETUPREQUESTIES_CSG_IDLIST_PRESENT (1 << 1) + +typedef struct S1ap_S1SetupRequestIEs_s { + uint16_t presenceMask; + S1ap_Global_ENB_ID_t global_ENB_ID; + S1ap_ENBname_t eNBname; ///< Optional field + S1ap_SupportedTAs_t supportedTAs; + S1ap_PagingDRX_t defaultPagingDRX; + S1ap_CSG_IdList_t csG_IdList; ///< Optional field +} S1ap_S1SetupRequestIEs_t; + +typedef struct S1ap_NASNonDeliveryIndication_IEs_s { + 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; +} S1ap_NASNonDeliveryIndication_IEs_t; + +#define S1AP_CELLTRAFFICTRACEIES_PRIVACYINDICATOR_PRESENT (1 << 0) + +typedef struct S1ap_CellTrafficTraceIEs_s { + uint16_t presenceMask; + 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 traceCollectionEntityIPAddress; + S1ap_PrivacyIndicator_t privacyIndicator; ///< Optional field +} S1ap_CellTrafficTraceIEs_t; + +#define S1AP_E_RABSETUPREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT (1 << 0) + +typedef struct S1ap_E_RABSetupRequestIEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_UEAggregateMaximumBitrate_t uEaggregateMaximumBitrate; ///< Optional field + S1ap_E_RABToBeSetupListBearerSUReqIEs_t e_RABToBeSetupListBearerSUReq; +} S1ap_E_RABSetupRequestIEs_t; + +typedef struct S1ap_ENBStatusTransferIEs_s { + 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; +} S1ap_ENBStatusTransferIEs_t; + +#define S1AP_RESETACKNOWLEDGEIES_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_PRESENT (1 << 0) +#define S1AP_RESETACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 1) + +typedef struct S1ap_ResetAcknowledgeIEs_s { + uint16_t presenceMask; + S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_t uE_associatedLogicalS1_ConnectionListResAck; ///< Optional field + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_ResetAcknowledgeIEs_t; + +#define S1AP_UECONTEXTRELEASECOMPLETE_IES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0) + +typedef struct S1ap_UEContextReleaseComplete_IEs_s { + uint16_t presenceMask; + S1ap_MME_UE_S1AP_ID_t mme_ue_s1ap_id; + S1ap_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + S1ap_CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field +} S1ap_UEContextReleaseComplete_IEs_t; + +typedef struct S1ap_UplinkUEAssociatedLPPaTransport_IEs_s { + 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; +} S1ap_UplinkUEAssociatedLPPaTransport_IEs_t; + +typedef struct s1ap_message_s { + S1ap_ProcedureCode_t procedureCode; + S1ap_Criticality_t criticality; + uint8_t direction; + union { + S1ap_CellTrafficTraceIEs_t s1ap_CellTrafficTraceIEs; + S1ap_DeactivateTraceIEs_t s1ap_DeactivateTraceIEs; + S1ap_DownlinkNASTransport_IEs_t s1ap_DownlinkNASTransport_IEs; + S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_t s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs; + S1ap_DownlinkS1cdma2000tunnelingIEs_t s1ap_DownlinkS1cdma2000tunnelingIEs; + S1ap_DownlinkUEAssociatedLPPaTransport_IEs_t s1ap_DownlinkUEAssociatedLPPaTransport_IEs; + S1ap_E_RABAdmittedItemIEs_t s1ap_E_RABAdmittedItemIEs; + S1ap_E_RABDataForwardingItemIEs_t s1ap_E_RABDataForwardingItemIEs; + S1ap_E_RABFailedtoSetupItemHOReqAckIEs_t s1ap_E_RABFailedtoSetupItemHOReqAckIEs; + S1ap_E_RABModifyRequestIEs_t s1ap_E_RABModifyRequestIEs; + S1ap_E_RABModifyResponseIEs_t s1ap_E_RABModifyResponseIEs; + S1ap_E_RABReleaseCommandIEs_t s1ap_E_RABReleaseCommandIEs; + S1ap_E_RABReleaseIndicationIEs_t s1ap_E_RABReleaseIndicationIEs; + S1ap_E_RABReleaseResponseIEs_t s1ap_E_RABReleaseResponseIEs; + S1ap_E_RABSetupRequestIEs_t s1ap_E_RABSetupRequestIEs; + S1ap_E_RABSetupResponseIEs_t s1ap_E_RABSetupResponseIEs; + S1ap_E_RABToBeSetupItemHOReqIEs_t s1ap_E_RABToBeSetupItemHOReqIEs; + S1ap_E_RABToBeSwitchedDLItemIEs_t s1ap_E_RABToBeSwitchedDLItemIEs; + S1ap_E_RABToBeSwitchedULItemIEs_t s1ap_E_RABToBeSwitchedULItemIEs; + S1ap_ENBConfigurationTransferIEs_t s1ap_ENBConfigurationTransferIEs; + S1ap_ENBConfigurationUpdateAcknowledgeIEs_t s1ap_ENBConfigurationUpdateAcknowledgeIEs; + S1ap_ENBConfigurationUpdateFailureIEs_t s1ap_ENBConfigurationUpdateFailureIEs; + S1ap_ENBConfigurationUpdateIEs_t s1ap_ENBConfigurationUpdateIEs; + S1ap_ENBDirectInformationTransferIEs_t s1ap_ENBDirectInformationTransferIEs; + S1ap_ENBStatusTransferIEs_t s1ap_ENBStatusTransferIEs; + S1ap_ErrorIndicationIEs_t s1ap_ErrorIndicationIEs; + S1ap_HandoverCancelAcknowledgeIEs_t s1ap_HandoverCancelAcknowledgeIEs; + S1ap_HandoverCancelIEs_t s1ap_HandoverCancelIEs; + S1ap_HandoverCommandIEs_t s1ap_HandoverCommandIEs; + S1ap_HandoverFailureIEs_t s1ap_HandoverFailureIEs; + S1ap_HandoverNotifyIEs_t s1ap_HandoverNotifyIEs; + S1ap_HandoverPreparationFailureIEs_t s1ap_HandoverPreparationFailureIEs; + S1ap_HandoverRequestAcknowledgeIEs_t s1ap_HandoverRequestAcknowledgeIEs; + S1ap_HandoverRequestIEs_t s1ap_HandoverRequestIEs; + S1ap_HandoverRequiredIEs_t s1ap_HandoverRequiredIEs; + S1ap_InitialContextSetupFailureIEs_t s1ap_InitialContextSetupFailureIEs; + S1ap_InitialContextSetupRequestIEs_t s1ap_InitialContextSetupRequestIEs; + S1ap_InitialContextSetupResponseIEs_t s1ap_InitialContextSetupResponseIEs; + S1ap_InitialUEMessage_IEs_t s1ap_InitialUEMessage_IEs; + S1ap_KillRequestIEs_t s1ap_KillRequestIEs; + S1ap_KillResponseIEs_t s1ap_KillResponseIEs; + S1ap_LocationReportIEs_t s1ap_LocationReportIEs; + S1ap_LocationReportingControlIEs_t s1ap_LocationReportingControlIEs; + S1ap_LocationReportingFailureIndicationIEs_t s1ap_LocationReportingFailureIndicationIEs; + S1ap_MMEConfigurationTransferIEs_t s1ap_MMEConfigurationTransferIEs; + S1ap_MMEConfigurationUpdateAcknowledgeIEs_t s1ap_MMEConfigurationUpdateAcknowledgeIEs; + S1ap_MMEConfigurationUpdateFailureIEs_t s1ap_MMEConfigurationUpdateFailureIEs; + S1ap_MMEConfigurationUpdateIEs_t s1ap_MMEConfigurationUpdateIEs; + S1ap_MMEDirectInformationTransferIEs_t s1ap_MMEDirectInformationTransferIEs; + S1ap_MMEStatusTransferIEs_t s1ap_MMEStatusTransferIEs; + S1ap_NASNonDeliveryIndication_IEs_t s1ap_NASNonDeliveryIndication_IEs; + S1ap_OverloadStartIEs_t s1ap_OverloadStartIEs; + S1ap_OverloadStopIEs_t s1ap_OverloadStopIEs; + S1ap_PagingIEs_t s1ap_PagingIEs; + S1ap_PathSwitchRequestAcknowledgeIEs_t s1ap_PathSwitchRequestAcknowledgeIEs; + S1ap_PathSwitchRequestFailureIEs_t s1ap_PathSwitchRequestFailureIEs; + S1ap_PathSwitchRequestIEs_t s1ap_PathSwitchRequestIEs; + S1ap_ResetAcknowledgeIEs_t s1ap_ResetAcknowledgeIEs; + S1ap_ResetIEs_t s1ap_ResetIEs; + S1ap_S1SetupFailureIEs_t s1ap_S1SetupFailureIEs; + S1ap_S1SetupRequestIEs_t s1ap_S1SetupRequestIEs; + S1ap_S1SetupResponseIEs_t s1ap_S1SetupResponseIEs; + S1ap_TraceFailureIndicationIEs_t s1ap_TraceFailureIndicationIEs; + S1ap_TraceStartIEs_t s1ap_TraceStartIEs; + S1ap_UECapabilityInfoIndicationIEs_t s1ap_UECapabilityInfoIndicationIEs; + S1ap_UEContextModificationFailureIEs_t s1ap_UEContextModificationFailureIEs; + S1ap_UEContextModificationRequestIEs_t s1ap_UEContextModificationRequestIEs; + S1ap_UEContextModificationResponseIEs_t s1ap_UEContextModificationResponseIEs; + S1ap_UEContextReleaseCommand_IEs_t s1ap_UEContextReleaseCommand_IEs; + S1ap_UEContextReleaseComplete_IEs_t s1ap_UEContextReleaseComplete_IEs; + S1ap_UEContextReleaseRequest_IEs_t s1ap_UEContextReleaseRequest_IEs; + S1ap_UplinkNASTransport_IEs_t s1ap_UplinkNASTransport_IEs; + S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_t s1ap_UplinkNonUEAssociatedLPPaTransport_IEs; + S1ap_UplinkS1cdma2000tunnelingIEs_t s1ap_UplinkS1cdma2000tunnelingIEs; + S1ap_UplinkUEAssociatedLPPaTransport_IEs_t s1ap_UplinkUEAssociatedLPPaTransport_IEs; + S1ap_WriteReplaceWarningRequestIEs_t s1ap_WriteReplaceWarningRequestIEs; + S1ap_WriteReplaceWarningResponseIEs_t s1ap_WriteReplaceWarningResponseIEs; + } msg; +} s1ap_message; + +/** \brief Decode function for S1ap-E-RABFailedtoSetupItemHOReqAckIEs ies. + * \param s1ap_E_RABFailedtoSetupItemHOReqAckIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabfailedtosetupitemhoreqackies( + S1ap_E_RABFailedtoSetupItemHOReqAckIEs_t *s1ap_E_RABFailedtoSetupItemHOReqAckIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABFailedtoSetupItemHOReqAckIEs ies. + * \param s1ap_E_RABFailedtoSetupListHOReqAck Pointer to the ASN1 structure. + * \param s1ap_E_RABFailedtoSetupItemHOReqAckIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabfailedtosetupitemhoreqackies( + S1ap_E_RABFailedtoSetupListHOReqAck_t *s1ap_E_RABFailedtoSetupListHOReqAck, + S1ap_E_RABFailedtoSetupItemHOReqAckIEs_t *s1ap_E_RABFailedtoSetupItemHOReqAckIEs); + +/** \brief Decode function for S1ap-DeactivateTraceIEs ies. + * \param s1ap_DeactivateTraceIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_deactivatetraceies( + S1ap_DeactivateTraceIEs_t *s1ap_DeactivateTraceIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-DeactivateTraceIEs ies. + * \param s1ap_DeactivateTrace Pointer to the ASN1 structure. + * \param s1ap_DeactivateTraceIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_deactivatetraceies( + S1ap_DeactivateTrace_t *s1ap_DeactivateTrace, + S1ap_DeactivateTraceIEs_t *s1ap_DeactivateTraceIEs); + +/** \brief Decode function for S1ap-ENBDirectInformationTransferIEs ies. + * \param s1ap_ENBDirectInformationTransferIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_enbdirectinformationtransferies( + S1ap_ENBDirectInformationTransferIEs_t *s1ap_ENBDirectInformationTransferIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ENBDirectInformationTransferIEs ies. + * \param s1ap_ENBDirectInformationTransfer Pointer to the ASN1 structure. + * \param s1ap_ENBDirectInformationTransferIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_enbdirectinformationtransferies( + S1ap_ENBDirectInformationTransfer_t *s1ap_ENBDirectInformationTransfer, + S1ap_ENBDirectInformationTransferIEs_t *s1ap_ENBDirectInformationTransferIEs); + +/** \brief Decode function for S1ap-E-RABReleaseResponseIEs ies. + * \param s1ap_E_RABReleaseResponseIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabreleaseresponseies( + S1ap_E_RABReleaseResponseIEs_t *s1ap_E_RABReleaseResponseIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABReleaseResponseIEs ies. + * \param s1ap_E_RABReleaseResponse Pointer to the ASN1 structure. + * \param s1ap_E_RABReleaseResponseIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabreleaseresponseies( + S1ap_E_RABReleaseResponse_t *s1ap_E_RABReleaseResponse, + S1ap_E_RABReleaseResponseIEs_t *s1ap_E_RABReleaseResponseIEs); + +/** \brief Decode function for S1ap-UplinkNonUEAssociatedLPPaTransport-IEs ies. + * \param s1ap_UplinkNonUEAssociatedLPPaTransport_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uplinknonueassociatedlppatransport_ies( + S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkNonUEAssociatedLPPaTransport_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UplinkNonUEAssociatedLPPaTransport-IEs ies. + * \param s1ap_UplinkNonUEAssociatedLPPaTransport Pointer to the ASN1 structure. + * \param s1ap_UplinkNonUEAssociatedLPPaTransport_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uplinknonueassociatedlppatransport_ies( + S1ap_UplinkNonUEAssociatedLPPaTransport_t *s1ap_UplinkNonUEAssociatedLPPaTransport, + S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkNonUEAssociatedLPPaTransport_IEs); + +/** \brief Decode function for S1ap-E-RABToBeSetupItemHOReqIEs ies. + * \param s1ap_E_RABToBeSetupItemHOReqIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabtobesetupitemhoreqies( + S1ap_E_RABToBeSetupItemHOReqIEs_t *s1ap_E_RABToBeSetupItemHOReqIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABToBeSetupItemHOReqIEs ies. + * \param s1ap_E_RABToBeSetupListHOReq Pointer to the ASN1 structure. + * \param s1ap_E_RABToBeSetupItemHOReqIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabtobesetupitemhoreqies( + S1ap_E_RABToBeSetupListHOReq_t *s1ap_E_RABToBeSetupListHOReq, + S1ap_E_RABToBeSetupItemHOReqIEs_t *s1ap_E_RABToBeSetupItemHOReqIEs); + +/** \brief Decode function for S1ap-TraceStartIEs ies. + * \param s1ap_TraceStartIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_tracestarties( + S1ap_TraceStartIEs_t *s1ap_TraceStartIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-TraceStartIEs ies. + * \param s1ap_TraceStart Pointer to the ASN1 structure. + * \param s1ap_TraceStartIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_tracestarties( + S1ap_TraceStart_t *s1ap_TraceStart, + S1ap_TraceStartIEs_t *s1ap_TraceStartIEs); + +/** \brief Decode function for S1ap-WriteReplaceWarningResponseIEs ies. + * \param s1ap_WriteReplaceWarningResponseIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_writereplacewarningresponseies( + S1ap_WriteReplaceWarningResponseIEs_t *s1ap_WriteReplaceWarningResponseIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-WriteReplaceWarningResponseIEs ies. + * \param s1ap_WriteReplaceWarningResponse Pointer to the ASN1 structure. + * \param s1ap_WriteReplaceWarningResponseIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_writereplacewarningresponseies( + S1ap_WriteReplaceWarningResponse_t *s1ap_WriteReplaceWarningResponse, + S1ap_WriteReplaceWarningResponseIEs_t *s1ap_WriteReplaceWarningResponseIEs); + +/** \brief Decode function for S1ap-HandoverCancelIEs ies. + * \param s1ap_HandoverCancelIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handovercancelies( + S1ap_HandoverCancelIEs_t *s1ap_HandoverCancelIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverCancelIEs ies. + * \param s1ap_HandoverCancel Pointer to the ASN1 structure. + * \param s1ap_HandoverCancelIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handovercancelies( + S1ap_HandoverCancel_t *s1ap_HandoverCancel, + S1ap_HandoverCancelIEs_t *s1ap_HandoverCancelIEs); + +/** \brief Decode function for S1ap-HandoverPreparationFailureIEs ies. + * \param s1ap_HandoverPreparationFailureIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handoverpreparationfailureies( + S1ap_HandoverPreparationFailureIEs_t *s1ap_HandoverPreparationFailureIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverPreparationFailureIEs ies. + * \param s1ap_HandoverPreparationFailure Pointer to the ASN1 structure. + * \param s1ap_HandoverPreparationFailureIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handoverpreparationfailureies( + S1ap_HandoverPreparationFailure_t *s1ap_HandoverPreparationFailure, + S1ap_HandoverPreparationFailureIEs_t *s1ap_HandoverPreparationFailureIEs); + +/** \brief Decode function for S1ap-UEContextReleaseRequest-IEs ies. + * \param s1ap_UEContextReleaseRequest_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uecontextreleaserequest_ies( + S1ap_UEContextReleaseRequest_IEs_t *s1ap_UEContextReleaseRequest_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UEContextReleaseRequest-IEs ies. + * \param s1ap_UEContextReleaseRequest Pointer to the ASN1 structure. + * \param s1ap_UEContextReleaseRequest_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uecontextreleaserequest_ies( + S1ap_UEContextReleaseRequest_t *s1ap_UEContextReleaseRequest, + S1ap_UEContextReleaseRequest_IEs_t *s1ap_UEContextReleaseRequest_IEs); + +/** \brief Decode function for S1ap-E-RABAdmittedItemIEs ies. + * \param s1ap_E_RABAdmittedItemIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabadmitteditemies( + S1ap_E_RABAdmittedItemIEs_t *s1ap_E_RABAdmittedItemIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABAdmittedItemIEs ies. + * \param s1ap_E_RABAdmittedList Pointer to the ASN1 structure. + * \param s1ap_E_RABAdmittedItemIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabadmitteditemies( + S1ap_E_RABAdmittedList_t *s1ap_E_RABAdmittedList, + S1ap_E_RABAdmittedItemIEs_t *s1ap_E_RABAdmittedItemIEs); + +/** \brief Decode function for S1ap-InitialUEMessage-IEs ies. + * \param s1ap_InitialUEMessage_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_initialuemessage_ies( + S1ap_InitialUEMessage_IEs_t *s1ap_InitialUEMessage_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-InitialUEMessage-IEs ies. + * \param s1ap_InitialUEMessage Pointer to the ASN1 structure. + * \param s1ap_InitialUEMessage_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_initialuemessage_ies( + S1ap_InitialUEMessage_t *s1ap_InitialUEMessage, + S1ap_InitialUEMessage_IEs_t *s1ap_InitialUEMessage_IEs); + +/** \brief Decode function for S1ap-KillRequestIEs ies. + * \param s1ap_KillRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_killrequesties( + S1ap_KillRequestIEs_t *s1ap_KillRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-KillRequestIEs ies. + * \param s1ap_KillRequest Pointer to the ASN1 structure. + * \param s1ap_KillRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_killrequesties( + S1ap_KillRequest_t *s1ap_KillRequest, + S1ap_KillRequestIEs_t *s1ap_KillRequestIEs); + +/** \brief Decode function for S1ap-WriteReplaceWarningRequestIEs ies. + * \param s1ap_WriteReplaceWarningRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_writereplacewarningrequesties( + S1ap_WriteReplaceWarningRequestIEs_t *s1ap_WriteReplaceWarningRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-WriteReplaceWarningRequestIEs ies. + * \param s1ap_WriteReplaceWarningRequest Pointer to the ASN1 structure. + * \param s1ap_WriteReplaceWarningRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_writereplacewarningrequesties( + S1ap_WriteReplaceWarningRequest_t *s1ap_WriteReplaceWarningRequest, + S1ap_WriteReplaceWarningRequestIEs_t *s1ap_WriteReplaceWarningRequestIEs); + +/** \brief Decode function for S1ap-UECapabilityInfoIndicationIEs ies. + * \param s1ap_UECapabilityInfoIndicationIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uecapabilityinfoindicationies( + S1ap_UECapabilityInfoIndicationIEs_t *s1ap_UECapabilityInfoIndicationIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UECapabilityInfoIndicationIEs ies. + * \param s1ap_UECapabilityInfoIndication Pointer to the ASN1 structure. + * \param s1ap_UECapabilityInfoIndicationIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uecapabilityinfoindicationies( + S1ap_UECapabilityInfoIndication_t *s1ap_UECapabilityInfoIndication, + S1ap_UECapabilityInfoIndicationIEs_t *s1ap_UECapabilityInfoIndicationIEs); + +/** \brief Decode function for S1ap-E-RABDataForwardingItemIEs ies. + * \param s1ap_E_RABDataForwardingItemIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabdataforwardingitemies( + S1ap_E_RABDataForwardingItemIEs_t *s1ap_E_RABDataForwardingItemIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABDataForwardingItemIEs ies. + * \param s1ap_E_RABDataForwardingList Pointer to the ASN1 structure. + * \param s1ap_E_RABDataForwardingItemIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabdataforwardingitemies( + S1ap_E_RABDataForwardingList_t *s1ap_E_RABDataForwardingList, + S1ap_E_RABDataForwardingItemIEs_t *s1ap_E_RABDataForwardingItemIEs); + +/** \brief Decode function for S1ap-LocationReportingFailureIndicationIEs ies. + * \param s1ap_LocationReportingFailureIndicationIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_locationreportingfailureindicationies( + S1ap_LocationReportingFailureIndicationIEs_t *s1ap_LocationReportingFailureIndicationIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-LocationReportingFailureIndicationIEs ies. + * \param s1ap_LocationReportingFailureIndication Pointer to the ASN1 structure. + * \param s1ap_LocationReportingFailureIndicationIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_locationreportingfailureindicationies( + S1ap_LocationReportingFailureIndication_t *s1ap_LocationReportingFailureIndication, + S1ap_LocationReportingFailureIndicationIEs_t *s1ap_LocationReportingFailureIndicationIEs); + +/** \brief Decode function for S1ap-InitialContextSetupRequestIEs ies. + * \param s1ap_InitialContextSetupRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_initialcontextsetuprequesties( + S1ap_InitialContextSetupRequestIEs_t *s1ap_InitialContextSetupRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-InitialContextSetupRequestIEs ies. + * \param s1ap_InitialContextSetupRequest Pointer to the ASN1 structure. + * \param s1ap_InitialContextSetupRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_initialcontextsetuprequesties( + S1ap_InitialContextSetupRequest_t *s1ap_InitialContextSetupRequest, + S1ap_InitialContextSetupRequestIEs_t *s1ap_InitialContextSetupRequestIEs); + +/** \brief Decode function for S1ap-LocationReportIEs ies. + * \param s1ap_LocationReportIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_locationreporties( + S1ap_LocationReportIEs_t *s1ap_LocationReportIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-LocationReportIEs ies. + * \param s1ap_LocationReport Pointer to the ASN1 structure. + * \param s1ap_LocationReportIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_locationreporties( + S1ap_LocationReport_t *s1ap_LocationReport, + S1ap_LocationReportIEs_t *s1ap_LocationReportIEs); + +/** \brief Decode function for S1ap-UplinkNASTransport-IEs ies. + * \param s1ap_UplinkNASTransport_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uplinknastransport_ies( + S1ap_UplinkNASTransport_IEs_t *s1ap_UplinkNASTransport_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UplinkNASTransport-IEs ies. + * \param s1ap_UplinkNASTransport Pointer to the ASN1 structure. + * \param s1ap_UplinkNASTransport_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uplinknastransport_ies( + S1ap_UplinkNASTransport_t *s1ap_UplinkNASTransport, + S1ap_UplinkNASTransport_IEs_t *s1ap_UplinkNASTransport_IEs); + +/** \brief Decode function for S1ap-UEContextModificationResponseIEs ies. + * \param s1ap_UEContextModificationResponseIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uecontextmodificationresponseies( + S1ap_UEContextModificationResponseIEs_t *s1ap_UEContextModificationResponseIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UEContextModificationResponseIEs ies. + * \param s1ap_UEContextModificationResponse Pointer to the ASN1 structure. + * \param s1ap_UEContextModificationResponseIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uecontextmodificationresponseies( + S1ap_UEContextModificationResponse_t *s1ap_UEContextModificationResponse, + S1ap_UEContextModificationResponseIEs_t *s1ap_UEContextModificationResponseIEs); + +/** \brief Decode function for S1ap-UEContextModificationRequestIEs ies. + * \param s1ap_UEContextModificationRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uecontextmodificationrequesties( + S1ap_UEContextModificationRequestIEs_t *s1ap_UEContextModificationRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UEContextModificationRequestIEs ies. + * \param s1ap_UEContextModificationRequest Pointer to the ASN1 structure. + * \param s1ap_UEContextModificationRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uecontextmodificationrequesties( + S1ap_UEContextModificationRequest_t *s1ap_UEContextModificationRequest, + S1ap_UEContextModificationRequestIEs_t *s1ap_UEContextModificationRequestIEs); + +/** \brief Decode function for S1ap-LocationReportingControlIEs ies. + * \param s1ap_LocationReportingControlIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_locationreportingcontrolies( + S1ap_LocationReportingControlIEs_t *s1ap_LocationReportingControlIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-LocationReportingControlIEs ies. + * \param s1ap_LocationReportingControl Pointer to the ASN1 structure. + * \param s1ap_LocationReportingControlIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_locationreportingcontrolies( + S1ap_LocationReportingControl_t *s1ap_LocationReportingControl, + S1ap_LocationReportingControlIEs_t *s1ap_LocationReportingControlIEs); + +/** \brief Decode function for S1ap-UplinkS1cdma2000tunnelingIEs ies. + * \param s1ap_UplinkS1cdma2000tunnelingIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uplinks1cdma2000tunnelingies( + S1ap_UplinkS1cdma2000tunnelingIEs_t *s1ap_UplinkS1cdma2000tunnelingIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UplinkS1cdma2000tunnelingIEs ies. + * \param s1ap_UplinkS1cdma2000tunneling Pointer to the ASN1 structure. + * \param s1ap_UplinkS1cdma2000tunnelingIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uplinks1cdma2000tunnelingies( + S1ap_UplinkS1cdma2000tunneling_t *s1ap_UplinkS1cdma2000tunneling, + S1ap_UplinkS1cdma2000tunnelingIEs_t *s1ap_UplinkS1cdma2000tunnelingIEs); + +/** \brief Decode function for S1ap-HandoverRequestIEs ies. + * \param s1ap_HandoverRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handoverrequesties( + S1ap_HandoverRequestIEs_t *s1ap_HandoverRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverRequestIEs ies. + * \param s1ap_HandoverRequest Pointer to the ASN1 structure. + * \param s1ap_HandoverRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handoverrequesties( + S1ap_HandoverRequest_t *s1ap_HandoverRequest, + S1ap_HandoverRequestIEs_t *s1ap_HandoverRequestIEs); + +/** \brief Decode function for S1ap-HandoverRequiredIEs ies. + * \param s1ap_HandoverRequiredIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handoverrequiredies( + S1ap_HandoverRequiredIEs_t *s1ap_HandoverRequiredIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverRequiredIEs ies. + * \param s1ap_HandoverRequired Pointer to the ASN1 structure. + * \param s1ap_HandoverRequiredIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handoverrequiredies( + S1ap_HandoverRequired_t *s1ap_HandoverRequired, + S1ap_HandoverRequiredIEs_t *s1ap_HandoverRequiredIEs); + +/** \brief Decode function for S1ap-E-RABToBeSwitchedDLItemIEs ies. + * \param s1ap_E_RABToBeSwitchedDLItemIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabtobeswitcheddlitemies( + S1ap_E_RABToBeSwitchedDLItemIEs_t *s1ap_E_RABToBeSwitchedDLItemIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABToBeSwitchedDLItemIEs ies. + * \param s1ap_E_RABToBeSwitchedDLList Pointer to the ASN1 structure. + * \param s1ap_E_RABToBeSwitchedDLItemIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabtobeswitcheddlitemies( + S1ap_E_RABToBeSwitchedDLList_t *s1ap_E_RABToBeSwitchedDLList, + S1ap_E_RABToBeSwitchedDLItemIEs_t *s1ap_E_RABToBeSwitchedDLItemIEs); + +/** \brief Decode function for S1ap-MMEConfigurationUpdateAcknowledgeIEs ies. + * \param s1ap_MMEConfigurationUpdateAcknowledgeIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_mmeconfigurationupdateacknowledgeies( + S1ap_MMEConfigurationUpdateAcknowledgeIEs_t *s1ap_MMEConfigurationUpdateAcknowledgeIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-MMEConfigurationUpdateAcknowledgeIEs ies. + * \param s1ap_MMEConfigurationUpdateAcknowledge Pointer to the ASN1 structure. + * \param s1ap_MMEConfigurationUpdateAcknowledgeIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_mmeconfigurationupdateacknowledgeies( + S1ap_MMEConfigurationUpdateAcknowledge_t *s1ap_MMEConfigurationUpdateAcknowledge, + S1ap_MMEConfigurationUpdateAcknowledgeIEs_t *s1ap_MMEConfigurationUpdateAcknowledgeIEs); + +/** \brief Decode function for S1ap-KillResponseIEs ies. + * \param s1ap_KillResponseIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_killresponseies( + S1ap_KillResponseIEs_t *s1ap_KillResponseIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-KillResponseIEs ies. + * \param s1ap_KillResponse Pointer to the ASN1 structure. + * \param s1ap_KillResponseIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_killresponseies( + S1ap_KillResponse_t *s1ap_KillResponse, + S1ap_KillResponseIEs_t *s1ap_KillResponseIEs); + +/** \brief Decode function for S1ap-MMEStatusTransferIEs ies. + * \param s1ap_MMEStatusTransferIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_mmestatustransferies( + S1ap_MMEStatusTransferIEs_t *s1ap_MMEStatusTransferIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-MMEStatusTransferIEs ies. + * \param s1ap_MMEStatusTransfer Pointer to the ASN1 structure. + * \param s1ap_MMEStatusTransferIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_mmestatustransferies( + S1ap_MMEStatusTransfer_t *s1ap_MMEStatusTransfer, + S1ap_MMEStatusTransferIEs_t *s1ap_MMEStatusTransferIEs); + +/** \brief Decode function for S1ap-MMEConfigurationUpdateIEs ies. + * \param s1ap_MMEConfigurationUpdateIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_mmeconfigurationupdateies( + S1ap_MMEConfigurationUpdateIEs_t *s1ap_MMEConfigurationUpdateIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-MMEConfigurationUpdateIEs ies. + * \param s1ap_MMEConfigurationUpdate Pointer to the ASN1 structure. + * \param s1ap_MMEConfigurationUpdateIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_mmeconfigurationupdateies( + S1ap_MMEConfigurationUpdate_t *s1ap_MMEConfigurationUpdate, + S1ap_MMEConfigurationUpdateIEs_t *s1ap_MMEConfigurationUpdateIEs); + +/** \brief Decode function for S1ap-E-RABModifyRequestIEs ies. + * \param s1ap_E_RABModifyRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabmodifyrequesties( + S1ap_E_RABModifyRequestIEs_t *s1ap_E_RABModifyRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABModifyRequestIEs ies. + * \param s1ap_E_RABModifyRequest Pointer to the ASN1 structure. + * \param s1ap_E_RABModifyRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabmodifyrequesties( + S1ap_E_RABModifyRequest_t *s1ap_E_RABModifyRequest, + S1ap_E_RABModifyRequestIEs_t *s1ap_E_RABModifyRequestIEs); + +/** \brief Decode function for S1ap-E-RABToBeSwitchedULItemIEs ies. + * \param s1ap_E_RABToBeSwitchedULItemIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabtobeswitchedulitemies( + S1ap_E_RABToBeSwitchedULItemIEs_t *s1ap_E_RABToBeSwitchedULItemIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABToBeSwitchedULItemIEs ies. + * \param s1ap_E_RABToBeSwitchedULList Pointer to the ASN1 structure. + * \param s1ap_E_RABToBeSwitchedULItemIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabtobeswitchedulitemies( + S1ap_E_RABToBeSwitchedULList_t *s1ap_E_RABToBeSwitchedULList, + S1ap_E_RABToBeSwitchedULItemIEs_t *s1ap_E_RABToBeSwitchedULItemIEs); + +/** \brief Decode function for S1ap-ENBConfigurationUpdateFailureIEs ies. + * \param s1ap_ENBConfigurationUpdateFailureIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_enbconfigurationupdatefailureies( + S1ap_ENBConfigurationUpdateFailureIEs_t *s1ap_ENBConfigurationUpdateFailureIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ENBConfigurationUpdateFailureIEs ies. + * \param s1ap_ENBConfigurationUpdateFailure Pointer to the ASN1 structure. + * \param s1ap_ENBConfigurationUpdateFailureIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_enbconfigurationupdatefailureies( + S1ap_ENBConfigurationUpdateFailure_t *s1ap_ENBConfigurationUpdateFailure, + S1ap_ENBConfigurationUpdateFailureIEs_t *s1ap_ENBConfigurationUpdateFailureIEs); + +/** \brief Decode function for S1ap-ResetIEs ies. + * \param s1ap_ResetIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_reseties( + S1ap_ResetIEs_t *s1ap_ResetIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ResetIEs ies. + * \param s1ap_Reset Pointer to the ASN1 structure. + * \param s1ap_ResetIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_reseties( + S1ap_Reset_t *s1ap_Reset, + S1ap_ResetIEs_t *s1ap_ResetIEs); + +/** \brief Decode function for S1ap-S1SetupResponseIEs ies. + * \param s1ap_S1SetupResponseIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_s1setupresponseies( + S1ap_S1SetupResponseIEs_t *s1ap_S1SetupResponseIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-S1SetupResponseIEs ies. + * \param s1ap_S1SetupResponse Pointer to the ASN1 structure. + * \param s1ap_S1SetupResponseIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_s1setupresponseies( + S1ap_S1SetupResponse_t *s1ap_S1SetupResponse, + S1ap_S1SetupResponseIEs_t *s1ap_S1SetupResponseIEs); + +/** \brief Decode function for S1ap-PagingIEs ies. + * \param s1ap_PagingIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_pagingies( + S1ap_PagingIEs_t *s1ap_PagingIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-PagingIEs ies. + * \param s1ap_Paging Pointer to the ASN1 structure. + * \param s1ap_PagingIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_pagingies( + S1ap_Paging_t *s1ap_Paging, + S1ap_PagingIEs_t *s1ap_PagingIEs); + +/** \brief Decode function for S1ap-ENBConfigurationUpdateAcknowledgeIEs ies. + * \param s1ap_ENBConfigurationUpdateAcknowledgeIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_enbconfigurationupdateacknowledgeies( + S1ap_ENBConfigurationUpdateAcknowledgeIEs_t *s1ap_ENBConfigurationUpdateAcknowledgeIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ENBConfigurationUpdateAcknowledgeIEs ies. + * \param s1ap_ENBConfigurationUpdateAcknowledge Pointer to the ASN1 structure. + * \param s1ap_ENBConfigurationUpdateAcknowledgeIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_enbconfigurationupdateacknowledgeies( + S1ap_ENBConfigurationUpdateAcknowledge_t *s1ap_ENBConfigurationUpdateAcknowledge, + S1ap_ENBConfigurationUpdateAcknowledgeIEs_t *s1ap_ENBConfigurationUpdateAcknowledgeIEs); + +/** \brief Decode function for S1ap-E-RABReleaseCommandIEs ies. + * \param s1ap_E_RABReleaseCommandIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabreleasecommandies( + S1ap_E_RABReleaseCommandIEs_t *s1ap_E_RABReleaseCommandIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABReleaseCommandIEs ies. + * \param s1ap_E_RABReleaseCommand Pointer to the ASN1 structure. + * \param s1ap_E_RABReleaseCommandIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabreleasecommandies( + S1ap_E_RABReleaseCommand_t *s1ap_E_RABReleaseCommand, + S1ap_E_RABReleaseCommandIEs_t *s1ap_E_RABReleaseCommandIEs); + +/** \brief Decode function for S1ap-PathSwitchRequestFailureIEs ies. + * \param s1ap_PathSwitchRequestFailureIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_pathswitchrequestfailureies( + S1ap_PathSwitchRequestFailureIEs_t *s1ap_PathSwitchRequestFailureIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-PathSwitchRequestFailureIEs ies. + * \param s1ap_PathSwitchRequestFailure Pointer to the ASN1 structure. + * \param s1ap_PathSwitchRequestFailureIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_pathswitchrequestfailureies( + S1ap_PathSwitchRequestFailure_t *s1ap_PathSwitchRequestFailure, + S1ap_PathSwitchRequestFailureIEs_t *s1ap_PathSwitchRequestFailureIEs); + +/** \brief Decode function for S1ap-E-RABModifyResponseIEs ies. + * \param s1ap_E_RABModifyResponseIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabmodifyresponseies( + S1ap_E_RABModifyResponseIEs_t *s1ap_E_RABModifyResponseIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABModifyResponseIEs ies. + * \param s1ap_E_RABModifyResponse Pointer to the ASN1 structure. + * \param s1ap_E_RABModifyResponseIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabmodifyresponseies( + S1ap_E_RABModifyResponse_t *s1ap_E_RABModifyResponse, + S1ap_E_RABModifyResponseIEs_t *s1ap_E_RABModifyResponseIEs); + +/** \brief Decode function for S1ap-HandoverNotifyIEs ies. + * \param s1ap_HandoverNotifyIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handovernotifyies( + S1ap_HandoverNotifyIEs_t *s1ap_HandoverNotifyIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverNotifyIEs ies. + * \param s1ap_HandoverNotify Pointer to the ASN1 structure. + * \param s1ap_HandoverNotifyIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handovernotifyies( + S1ap_HandoverNotify_t *s1ap_HandoverNotify, + S1ap_HandoverNotifyIEs_t *s1ap_HandoverNotifyIEs); + +/** \brief Decode function for S1ap-HandoverCancelAcknowledgeIEs ies. + * \param s1ap_HandoverCancelAcknowledgeIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handovercancelacknowledgeies( + S1ap_HandoverCancelAcknowledgeIEs_t *s1ap_HandoverCancelAcknowledgeIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverCancelAcknowledgeIEs ies. + * \param s1ap_HandoverCancelAcknowledge Pointer to the ASN1 structure. + * \param s1ap_HandoverCancelAcknowledgeIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handovercancelacknowledgeies( + S1ap_HandoverCancelAcknowledge_t *s1ap_HandoverCancelAcknowledge, + S1ap_HandoverCancelAcknowledgeIEs_t *s1ap_HandoverCancelAcknowledgeIEs); + +/** \brief Decode function for S1ap-InitialContextSetupFailureIEs ies. + * \param s1ap_InitialContextSetupFailureIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_initialcontextsetupfailureies( + S1ap_InitialContextSetupFailureIEs_t *s1ap_InitialContextSetupFailureIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-InitialContextSetupFailureIEs ies. + * \param s1ap_InitialContextSetupFailure Pointer to the ASN1 structure. + * \param s1ap_InitialContextSetupFailureIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_initialcontextsetupfailureies( + S1ap_InitialContextSetupFailure_t *s1ap_InitialContextSetupFailure, + S1ap_InitialContextSetupFailureIEs_t *s1ap_InitialContextSetupFailureIEs); + +/** \brief Decode function for S1ap-HandoverCommandIEs ies. + * \param s1ap_HandoverCommandIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handovercommandies( + S1ap_HandoverCommandIEs_t *s1ap_HandoverCommandIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverCommandIEs ies. + * \param s1ap_HandoverCommand Pointer to the ASN1 structure. + * \param s1ap_HandoverCommandIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handovercommandies( + S1ap_HandoverCommand_t *s1ap_HandoverCommand, + S1ap_HandoverCommandIEs_t *s1ap_HandoverCommandIEs); + +/** \brief Decode function for S1ap-MMEDirectInformationTransferIEs ies. + * \param s1ap_MMEDirectInformationTransferIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_mmedirectinformationtransferies( + S1ap_MMEDirectInformationTransferIEs_t *s1ap_MMEDirectInformationTransferIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-MMEDirectInformationTransferIEs ies. + * \param s1ap_MMEDirectInformationTransfer Pointer to the ASN1 structure. + * \param s1ap_MMEDirectInformationTransferIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_mmedirectinformationtransferies( + S1ap_MMEDirectInformationTransfer_t *s1ap_MMEDirectInformationTransfer, + S1ap_MMEDirectInformationTransferIEs_t *s1ap_MMEDirectInformationTransferIEs); + +/** \brief Decode function for S1ap-ErrorIndicationIEs ies. + * \param s1ap_ErrorIndicationIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_errorindicationies( + S1ap_ErrorIndicationIEs_t *s1ap_ErrorIndicationIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ErrorIndicationIEs ies. + * \param s1ap_ErrorIndication Pointer to the ASN1 structure. + * \param s1ap_ErrorIndicationIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_errorindicationies( + S1ap_ErrorIndication_t *s1ap_ErrorIndication, + S1ap_ErrorIndicationIEs_t *s1ap_ErrorIndicationIEs); + +/** \brief Decode function for S1ap-OverloadStartIEs ies. + * \param s1ap_OverloadStartIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_overloadstarties( + S1ap_OverloadStartIEs_t *s1ap_OverloadStartIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-OverloadStartIEs ies. + * \param s1ap_OverloadStart Pointer to the ASN1 structure. + * \param s1ap_OverloadStartIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_overloadstarties( + S1ap_OverloadStart_t *s1ap_OverloadStart, + S1ap_OverloadStartIEs_t *s1ap_OverloadStartIEs); + +/** \brief Decode function for S1ap-DownlinkNonUEAssociatedLPPaTransport-IEs ies. + * \param s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_downlinknonueassociatedlppatransport_ies( + S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-DownlinkNonUEAssociatedLPPaTransport-IEs ies. + * \param s1ap_DownlinkNonUEAssociatedLPPaTransport Pointer to the ASN1 structure. + * \param s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_downlinknonueassociatedlppatransport_ies( + S1ap_DownlinkNonUEAssociatedLPPaTransport_t *s1ap_DownlinkNonUEAssociatedLPPaTransport, + S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs); + +/** \brief Decode function for S1ap-HandoverRequestAcknowledgeIEs ies. + * \param s1ap_HandoverRequestAcknowledgeIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handoverrequestacknowledgeies( + S1ap_HandoverRequestAcknowledgeIEs_t *s1ap_HandoverRequestAcknowledgeIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverRequestAcknowledgeIEs ies. + * \param s1ap_HandoverRequestAcknowledge Pointer to the ASN1 structure. + * \param s1ap_HandoverRequestAcknowledgeIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handoverrequestacknowledgeies( + S1ap_HandoverRequestAcknowledge_t *s1ap_HandoverRequestAcknowledge, + S1ap_HandoverRequestAcknowledgeIEs_t *s1ap_HandoverRequestAcknowledgeIEs); + +/** \brief Decode function for S1ap-DownlinkUEAssociatedLPPaTransport-IEs ies. + * \param s1ap_DownlinkUEAssociatedLPPaTransport_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_downlinkueassociatedlppatransport_ies( + S1ap_DownlinkUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkUEAssociatedLPPaTransport_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-DownlinkUEAssociatedLPPaTransport-IEs ies. + * \param s1ap_DownlinkUEAssociatedLPPaTransport Pointer to the ASN1 structure. + * \param s1ap_DownlinkUEAssociatedLPPaTransport_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_downlinkueassociatedlppatransport_ies( + S1ap_DownlinkUEAssociatedLPPaTransport_t *s1ap_DownlinkUEAssociatedLPPaTransport, + S1ap_DownlinkUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkUEAssociatedLPPaTransport_IEs); + +/** \brief Decode function for S1ap-UEContextModificationFailureIEs ies. + * \param s1ap_UEContextModificationFailureIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uecontextmodificationfailureies( + S1ap_UEContextModificationFailureIEs_t *s1ap_UEContextModificationFailureIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UEContextModificationFailureIEs ies. + * \param s1ap_UEContextModificationFailure Pointer to the ASN1 structure. + * \param s1ap_UEContextModificationFailureIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uecontextmodificationfailureies( + S1ap_UEContextModificationFailure_t *s1ap_UEContextModificationFailure, + S1ap_UEContextModificationFailureIEs_t *s1ap_UEContextModificationFailureIEs); + +/** \brief Decode function for S1ap-MMEConfigurationTransferIEs ies. + * \param s1ap_MMEConfigurationTransferIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_mmeconfigurationtransferies( + S1ap_MMEConfigurationTransferIEs_t *s1ap_MMEConfigurationTransferIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-MMEConfigurationTransferIEs ies. + * \param s1ap_MMEConfigurationTransfer Pointer to the ASN1 structure. + * \param s1ap_MMEConfigurationTransferIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_mmeconfigurationtransferies( + S1ap_MMEConfigurationTransfer_t *s1ap_MMEConfigurationTransfer, + S1ap_MMEConfigurationTransferIEs_t *s1ap_MMEConfigurationTransferIEs); + +/** \brief Decode function for S1ap-PathSwitchRequestAcknowledgeIEs ies. + * \param s1ap_PathSwitchRequestAcknowledgeIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_pathswitchrequestacknowledgeies( + S1ap_PathSwitchRequestAcknowledgeIEs_t *s1ap_PathSwitchRequestAcknowledgeIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-PathSwitchRequestAcknowledgeIEs ies. + * \param s1ap_PathSwitchRequestAcknowledge Pointer to the ASN1 structure. + * \param s1ap_PathSwitchRequestAcknowledgeIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_pathswitchrequestacknowledgeies( + S1ap_PathSwitchRequestAcknowledge_t *s1ap_PathSwitchRequestAcknowledge, + S1ap_PathSwitchRequestAcknowledgeIEs_t *s1ap_PathSwitchRequestAcknowledgeIEs); + +/** \brief Decode function for S1ap-S1SetupFailureIEs ies. + * \param s1ap_S1SetupFailureIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_s1setupfailureies( + S1ap_S1SetupFailureIEs_t *s1ap_S1SetupFailureIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-S1SetupFailureIEs ies. + * \param s1ap_S1SetupFailure Pointer to the ASN1 structure. + * \param s1ap_S1SetupFailureIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_s1setupfailureies( + S1ap_S1SetupFailure_t *s1ap_S1SetupFailure, + S1ap_S1SetupFailureIEs_t *s1ap_S1SetupFailureIEs); + +/** \brief Decode function for S1ap-MMEConfigurationUpdateFailureIEs ies. + * \param s1ap_MMEConfigurationUpdateFailureIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_mmeconfigurationupdatefailureies( + S1ap_MMEConfigurationUpdateFailureIEs_t *s1ap_MMEConfigurationUpdateFailureIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-MMEConfigurationUpdateFailureIEs ies. + * \param s1ap_MMEConfigurationUpdateFailure Pointer to the ASN1 structure. + * \param s1ap_MMEConfigurationUpdateFailureIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_mmeconfigurationupdatefailureies( + S1ap_MMEConfigurationUpdateFailure_t *s1ap_MMEConfigurationUpdateFailure, + S1ap_MMEConfigurationUpdateFailureIEs_t *s1ap_MMEConfigurationUpdateFailureIEs); + +/** \brief Decode function for S1ap-InitialContextSetupResponseIEs ies. + * \param s1ap_InitialContextSetupResponseIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_initialcontextsetupresponseies( + S1ap_InitialContextSetupResponseIEs_t *s1ap_InitialContextSetupResponseIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-InitialContextSetupResponseIEs ies. + * \param s1ap_InitialContextSetupResponse Pointer to the ASN1 structure. + * \param s1ap_InitialContextSetupResponseIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_initialcontextsetupresponseies( + S1ap_InitialContextSetupResponse_t *s1ap_InitialContextSetupResponse, + S1ap_InitialContextSetupResponseIEs_t *s1ap_InitialContextSetupResponseIEs); + +/** \brief Decode function for S1ap-DownlinkS1cdma2000tunnelingIEs ies. + * \param s1ap_DownlinkS1cdma2000tunnelingIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_downlinks1cdma2000tunnelingies( + S1ap_DownlinkS1cdma2000tunnelingIEs_t *s1ap_DownlinkS1cdma2000tunnelingIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-DownlinkS1cdma2000tunnelingIEs ies. + * \param s1ap_DownlinkS1cdma2000tunneling Pointer to the ASN1 structure. + * \param s1ap_DownlinkS1cdma2000tunnelingIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_downlinks1cdma2000tunnelingies( + S1ap_DownlinkS1cdma2000tunneling_t *s1ap_DownlinkS1cdma2000tunneling, + S1ap_DownlinkS1cdma2000tunnelingIEs_t *s1ap_DownlinkS1cdma2000tunnelingIEs); + +/** \brief Decode function for S1ap-OverloadStopIEs ies. + * \param s1ap_OverloadStopIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_overloadstopies( + S1ap_OverloadStopIEs_t *s1ap_OverloadStopIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-OverloadStopIEs ies. + * \param s1ap_OverloadStop Pointer to the ASN1 structure. + * \param s1ap_OverloadStopIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_overloadstopies( + S1ap_OverloadStop_t *s1ap_OverloadStop, + S1ap_OverloadStopIEs_t *s1ap_OverloadStopIEs); + +/** \brief Decode function for S1ap-ENBConfigurationUpdateIEs ies. + * \param s1ap_ENBConfigurationUpdateIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_enbconfigurationupdateies( + S1ap_ENBConfigurationUpdateIEs_t *s1ap_ENBConfigurationUpdateIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ENBConfigurationUpdateIEs ies. + * \param s1ap_ENBConfigurationUpdate Pointer to the ASN1 structure. + * \param s1ap_ENBConfigurationUpdateIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_enbconfigurationupdateies( + S1ap_ENBConfigurationUpdate_t *s1ap_ENBConfigurationUpdate, + S1ap_ENBConfigurationUpdateIEs_t *s1ap_ENBConfigurationUpdateIEs); + +/** \brief Decode function for S1ap-TraceFailureIndicationIEs ies. + * \param s1ap_TraceFailureIndicationIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_tracefailureindicationies( + S1ap_TraceFailureIndicationIEs_t *s1ap_TraceFailureIndicationIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-TraceFailureIndicationIEs ies. + * \param s1ap_TraceFailureIndication Pointer to the ASN1 structure. + * \param s1ap_TraceFailureIndicationIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_tracefailureindicationies( + S1ap_TraceFailureIndication_t *s1ap_TraceFailureIndication, + S1ap_TraceFailureIndicationIEs_t *s1ap_TraceFailureIndicationIEs); + +/** \brief Decode function for S1ap-ENBConfigurationTransferIEs ies. + * \param s1ap_ENBConfigurationTransferIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_enbconfigurationtransferies( + S1ap_ENBConfigurationTransferIEs_t *s1ap_ENBConfigurationTransferIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ENBConfigurationTransferIEs ies. + * \param s1ap_ENBConfigurationTransfer Pointer to the ASN1 structure. + * \param s1ap_ENBConfigurationTransferIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_enbconfigurationtransferies( + S1ap_ENBConfigurationTransfer_t *s1ap_ENBConfigurationTransfer, + S1ap_ENBConfigurationTransferIEs_t *s1ap_ENBConfigurationTransferIEs); + +/** \brief Decode function for S1ap-HandoverFailureIEs ies. + * \param s1ap_HandoverFailureIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_handoverfailureies( + S1ap_HandoverFailureIEs_t *s1ap_HandoverFailureIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-HandoverFailureIEs ies. + * \param s1ap_HandoverFailure Pointer to the ASN1 structure. + * \param s1ap_HandoverFailureIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_handoverfailureies( + S1ap_HandoverFailure_t *s1ap_HandoverFailure, + S1ap_HandoverFailureIEs_t *s1ap_HandoverFailureIEs); + +/** \brief Decode function for S1ap-E-RABSetupResponseIEs ies. + * \param s1ap_E_RABSetupResponseIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabsetupresponseies( + S1ap_E_RABSetupResponseIEs_t *s1ap_E_RABSetupResponseIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABSetupResponseIEs ies. + * \param s1ap_E_RABSetupResponse Pointer to the ASN1 structure. + * \param s1ap_E_RABSetupResponseIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabsetupresponseies( + S1ap_E_RABSetupResponse_t *s1ap_E_RABSetupResponse, + S1ap_E_RABSetupResponseIEs_t *s1ap_E_RABSetupResponseIEs); + +/** \brief Decode function for S1ap-UEContextReleaseCommand-IEs ies. + * \param s1ap_UEContextReleaseCommand_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uecontextreleasecommand_ies( + S1ap_UEContextReleaseCommand_IEs_t *s1ap_UEContextReleaseCommand_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UEContextReleaseCommand-IEs ies. + * \param s1ap_UEContextReleaseCommand Pointer to the ASN1 structure. + * \param s1ap_UEContextReleaseCommand_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uecontextreleasecommand_ies( + S1ap_UEContextReleaseCommand_t *s1ap_UEContextReleaseCommand, + S1ap_UEContextReleaseCommand_IEs_t *s1ap_UEContextReleaseCommand_IEs); + +/** \brief Decode function for S1ap-PathSwitchRequestIEs ies. + * \param s1ap_PathSwitchRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_pathswitchrequesties( + S1ap_PathSwitchRequestIEs_t *s1ap_PathSwitchRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-PathSwitchRequestIEs ies. + * \param s1ap_PathSwitchRequest Pointer to the ASN1 structure. + * \param s1ap_PathSwitchRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_pathswitchrequesties( + S1ap_PathSwitchRequest_t *s1ap_PathSwitchRequest, + S1ap_PathSwitchRequestIEs_t *s1ap_PathSwitchRequestIEs); + +/** \brief Decode function for S1ap-DownlinkNASTransport-IEs ies. + * \param s1ap_DownlinkNASTransport_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_downlinknastransport_ies( + S1ap_DownlinkNASTransport_IEs_t *s1ap_DownlinkNASTransport_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-DownlinkNASTransport-IEs ies. + * \param s1ap_DownlinkNASTransport Pointer to the ASN1 structure. + * \param s1ap_DownlinkNASTransport_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_downlinknastransport_ies( + S1ap_DownlinkNASTransport_t *s1ap_DownlinkNASTransport, + S1ap_DownlinkNASTransport_IEs_t *s1ap_DownlinkNASTransport_IEs); + +/** \brief Decode function for S1ap-E-RABReleaseIndicationIEs ies. + * \param s1ap_E_RABReleaseIndicationIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabreleaseindicationies( + S1ap_E_RABReleaseIndicationIEs_t *s1ap_E_RABReleaseIndicationIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABReleaseIndicationIEs ies. + * \param s1ap_E_RABReleaseIndication Pointer to the ASN1 structure. + * \param s1ap_E_RABReleaseIndicationIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabreleaseindicationies( + S1ap_E_RABReleaseIndication_t *s1ap_E_RABReleaseIndication, + S1ap_E_RABReleaseIndicationIEs_t *s1ap_E_RABReleaseIndicationIEs); + +/** \brief Decode function for S1ap-S1SetupRequestIEs ies. + * \param s1ap_S1SetupRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_s1setuprequesties( + S1ap_S1SetupRequestIEs_t *s1ap_S1SetupRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-S1SetupRequestIEs ies. + * \param s1ap_S1SetupRequest Pointer to the ASN1 structure. + * \param s1ap_S1SetupRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_s1setuprequesties( + S1ap_S1SetupRequest_t *s1ap_S1SetupRequest, + S1ap_S1SetupRequestIEs_t *s1ap_S1SetupRequestIEs); + +/** \brief Decode function for S1ap-NASNonDeliveryIndication-IEs ies. + * \param s1ap_NASNonDeliveryIndication_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_nasnondeliveryindication_ies( + S1ap_NASNonDeliveryIndication_IEs_t *s1ap_NASNonDeliveryIndication_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-NASNonDeliveryIndication-IEs ies. + * \param s1ap_NASNonDeliveryIndication Pointer to the ASN1 structure. + * \param s1ap_NASNonDeliveryIndication_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_nasnondeliveryindication_ies( + S1ap_NASNonDeliveryIndication_t *s1ap_NASNonDeliveryIndication, + S1ap_NASNonDeliveryIndication_IEs_t *s1ap_NASNonDeliveryIndication_IEs); + +/** \brief Decode function for S1ap-CellTrafficTraceIEs ies. + * \param s1ap_CellTrafficTraceIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_celltraffictraceies( + S1ap_CellTrafficTraceIEs_t *s1ap_CellTrafficTraceIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-CellTrafficTraceIEs ies. + * \param s1ap_CellTrafficTrace Pointer to the ASN1 structure. + * \param s1ap_CellTrafficTraceIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_celltraffictraceies( + S1ap_CellTrafficTrace_t *s1ap_CellTrafficTrace, + S1ap_CellTrafficTraceIEs_t *s1ap_CellTrafficTraceIEs); + +/** \brief Decode function for S1ap-E-RABSetupRequestIEs ies. + * \param s1ap_E_RABSetupRequestIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_e_rabsetuprequesties( + S1ap_E_RABSetupRequestIEs_t *s1ap_E_RABSetupRequestIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-E-RABSetupRequestIEs ies. + * \param s1ap_E_RABSetupRequest Pointer to the ASN1 structure. + * \param s1ap_E_RABSetupRequestIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabsetuprequesties( + S1ap_E_RABSetupRequest_t *s1ap_E_RABSetupRequest, + S1ap_E_RABSetupRequestIEs_t *s1ap_E_RABSetupRequestIEs); + +/** \brief Decode function for S1ap-ENBStatusTransferIEs ies. + * \param s1ap_ENBStatusTransferIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_enbstatustransferies( + S1ap_ENBStatusTransferIEs_t *s1ap_ENBStatusTransferIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ENBStatusTransferIEs ies. + * \param s1ap_ENBStatusTransfer Pointer to the ASN1 structure. + * \param s1ap_ENBStatusTransferIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_enbstatustransferies( + S1ap_ENBStatusTransfer_t *s1ap_ENBStatusTransfer, + S1ap_ENBStatusTransferIEs_t *s1ap_ENBStatusTransferIEs); + +/** \brief Decode function for S1ap-ResetAcknowledgeIEs ies. + * \param s1ap_ResetAcknowledgeIEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_resetacknowledgeies( + S1ap_ResetAcknowledgeIEs_t *s1ap_ResetAcknowledgeIEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-ResetAcknowledgeIEs ies. + * \param s1ap_ResetAcknowledge Pointer to the ASN1 structure. + * \param s1ap_ResetAcknowledgeIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_resetacknowledgeies( + S1ap_ResetAcknowledge_t *s1ap_ResetAcknowledge, + S1ap_ResetAcknowledgeIEs_t *s1ap_ResetAcknowledgeIEs); + +/** \brief Decode function for S1ap-UEContextReleaseComplete-IEs ies. + * \param s1ap_UEContextReleaseComplete_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uecontextreleasecomplete_ies( + S1ap_UEContextReleaseComplete_IEs_t *s1ap_UEContextReleaseComplete_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UEContextReleaseComplete-IEs ies. + * \param s1ap_UEContextReleaseComplete Pointer to the ASN1 structure. + * \param s1ap_UEContextReleaseComplete_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uecontextreleasecomplete_ies( + S1ap_UEContextReleaseComplete_t *s1ap_UEContextReleaseComplete, + S1ap_UEContextReleaseComplete_IEs_t *s1ap_UEContextReleaseComplete_IEs); + +/** \brief Decode function for S1ap-UplinkUEAssociatedLPPaTransport-IEs ies. + * \param s1ap_UplinkUEAssociatedLPPaTransport_IEs Pointer to ASN1 structure in which data will be stored + * \param any_p Pointer to the ANY value to decode. + **/ +int s1ap_decode_s1ap_uplinkueassociatedlppatransport_ies( + S1ap_UplinkUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkUEAssociatedLPPaTransport_IEs, + ANY_t *any_p); + +/** \brief Encode function for S1ap-UplinkUEAssociatedLPPaTransport-IEs ies. + * \param s1ap_UplinkUEAssociatedLPPaTransport Pointer to the ASN1 structure. + * \param s1ap_UplinkUEAssociatedLPPaTransport_IEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_uplinkueassociatedlppatransport_ies( + S1ap_UplinkUEAssociatedLPPaTransport_t *s1ap_UplinkUEAssociatedLPPaTransport, + S1ap_UplinkUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkUEAssociatedLPPaTransport_IEs); + +/** \brief Encode function for S1ap-E-RABReleaseItemBearerRelCompIEs ies. + * \param s1ap_E_RABReleaseListBearerRelComp Pointer to the ASN1 structure. + * \param s1ap_E_RABReleaseItemBearerRelCompIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabreleaselistbearerrelcomp( + S1ap_E_RABReleaseListBearerRelComp_t *s1ap_E_RABReleaseListBearerRelComp, + S1ap_E_RABReleaseListBearerRelCompIEs_t *s1ap_E_RABReleaseListBearerRelCompIEs); + +/** \brief Decode function for S1ap-E-RABReleaseItemBearerRelCompIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rabreleaselistbearerrelcomp( + S1ap_E_RABReleaseListBearerRelCompIEs_t *s1ap_E_RABReleaseListBearerRelCompIEs, + S1ap_E_RABReleaseListBearerRelComp_t *s1ap_E_RABReleaseListBearerRelComp); + +/** \brief Encode function for S1ap-E-RABToBeModifiedItemBearerModReqIEs ies. + * \param s1ap_E_RABToBeModifiedListBearerModReq Pointer to the ASN1 structure. + * \param s1ap_E_RABToBeModifiedItemBearerModReqIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabtobemodifiedlistbearermodreq( + S1ap_E_RABToBeModifiedListBearerModReq_t *s1ap_E_RABToBeModifiedListBearerModReq, + S1ap_E_RABToBeModifiedListBearerModReqIEs_t *s1ap_E_RABToBeModifiedListBearerModReqIEs); + +/** \brief Decode function for S1ap-E-RABToBeModifiedItemBearerModReqIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rabtobemodifiedlistbearermodreq( + S1ap_E_RABToBeModifiedListBearerModReqIEs_t *s1ap_E_RABToBeModifiedListBearerModReqIEs, + S1ap_E_RABToBeModifiedListBearerModReq_t *s1ap_E_RABToBeModifiedListBearerModReq); + +/** \brief Encode function for S1ap-E-RABToBeSetupItemBearerSUReqIEs ies. + * \param s1ap_E_RABToBeSetupListBearerSUReq Pointer to the ASN1 structure. + * \param s1ap_E_RABToBeSetupItemBearerSUReqIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabtobesetuplistbearersureq( + S1ap_E_RABToBeSetupListBearerSUReq_t *s1ap_E_RABToBeSetupListBearerSUReq, + S1ap_E_RABToBeSetupListBearerSUReqIEs_t *s1ap_E_RABToBeSetupListBearerSUReqIEs); + +/** \brief Decode function for S1ap-E-RABToBeSetupItemBearerSUReqIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rabtobesetuplistbearersureq( + S1ap_E_RABToBeSetupListBearerSUReqIEs_t *s1ap_E_RABToBeSetupListBearerSUReqIEs, + S1ap_E_RABToBeSetupListBearerSUReq_t *s1ap_E_RABToBeSetupListBearerSUReq); + +/** \brief Encode function for S1ap-E-RABSetupItemCtxtSUResIEs ies. + * \param s1ap_E_RABSetupListCtxtSURes Pointer to the ASN1 structure. + * \param s1ap_E_RABSetupItemCtxtSUResIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabsetuplistctxtsures( + S1ap_E_RABSetupListCtxtSURes_t *s1ap_E_RABSetupListCtxtSURes, + S1ap_E_RABSetupListCtxtSUResIEs_t *s1ap_E_RABSetupListCtxtSUResIEs); + +/** \brief Decode function for S1ap-E-RABSetupItemCtxtSUResIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rabsetuplistctxtsures( + S1ap_E_RABSetupListCtxtSUResIEs_t *s1ap_E_RABSetupListCtxtSUResIEs, + S1ap_E_RABSetupListCtxtSURes_t *s1ap_E_RABSetupListCtxtSURes); + +/** \brief Encode function for S1ap-Bearers-SubjectToStatusTransfer-ItemIEs ies. + * \param s1ap_Bearers_SubjectToStatusTransfer_List Pointer to the ASN1 structure. + * \param s1ap_Bearers_SubjectToStatusTransfer_ItemIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_bearers_subjecttostatustransfer_list( + S1ap_Bearers_SubjectToStatusTransfer_List_t *s1ap_Bearers_SubjectToStatusTransfer_List, + S1ap_Bearers_SubjectToStatusTransfer_ListIEs_t *s1ap_Bearers_SubjectToStatusTransfer_ListIEs); + +/** \brief Decode function for S1ap-Bearers-SubjectToStatusTransfer-ItemIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_bearers_subjecttostatustransfer_list( + S1ap_Bearers_SubjectToStatusTransfer_ListIEs_t *s1ap_Bearers_SubjectToStatusTransfer_ListIEs, + S1ap_Bearers_SubjectToStatusTransfer_List_t *s1ap_Bearers_SubjectToStatusTransfer_List); + +/** \brief Encode function for S1ap-E-RABItemIEs ies. + * \param s1ap_E_RABList Pointer to the ASN1 structure. + * \param s1ap_E_RABItemIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rablist( + S1ap_E_RABList_t *s1ap_E_RABList, + S1ap_E_RABListIEs_t *s1ap_E_RABListIEs); + +/** \brief Decode function for S1ap-E-RABItemIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rablist( + S1ap_E_RABListIEs_t *s1ap_E_RABListIEs, + S1ap_E_RABList_t *s1ap_E_RABList); + +/** \brief Encode function for S1ap-TAIItemIEs ies. + * \param s1ap_TAIList Pointer to the ASN1 structure. + * \param s1ap_TAIItemIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_tailist( + S1ap_TAIList_t *s1ap_TAIList, + S1ap_TAIListIEs_t *s1ap_TAIListIEs); + +/** \brief Decode function for S1ap-TAIItemIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_tailist( + S1ap_TAIListIEs_t *s1ap_TAIListIEs, + S1ap_TAIList_t *s1ap_TAIList); + +/** \brief Encode function for S1ap-UE-associatedLogicalS1-ConnectionItemRes ies. + * \param s1ap_UE_associatedLogicalS1_ConnectionListRes Pointer to the ASN1 structure. + * \param s1ap_UE_associatedLogicalS1_ConnectionItemRes Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_ue_associatedlogicals1_connectionlistres( + S1ap_UE_associatedLogicalS1_ConnectionListRes_t *s1ap_UE_associatedLogicalS1_ConnectionListRes, + S1ap_UE_associatedLogicalS1_ConnectionListResIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResIEs); + +/** \brief Decode function for S1ap-UE-associatedLogicalS1-ConnectionItemRes ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_ue_associatedlogicals1_connectionlistres( + S1ap_UE_associatedLogicalS1_ConnectionListResIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResIEs, + S1ap_UE_associatedLogicalS1_ConnectionListRes_t *s1ap_UE_associatedLogicalS1_ConnectionListRes); + +/** \brief Encode function for S1ap-E-RABSetupItemBearerSUResIEs ies. + * \param s1ap_E_RABSetupListBearerSURes Pointer to the ASN1 structure. + * \param s1ap_E_RABSetupItemBearerSUResIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabsetuplistbearersures( + S1ap_E_RABSetupListBearerSURes_t *s1ap_E_RABSetupListBearerSURes, + S1ap_E_RABSetupListBearerSUResIEs_t *s1ap_E_RABSetupListBearerSUResIEs); + +/** \brief Decode function for S1ap-E-RABSetupItemBearerSUResIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rabsetuplistbearersures( + S1ap_E_RABSetupListBearerSUResIEs_t *s1ap_E_RABSetupListBearerSUResIEs, + S1ap_E_RABSetupListBearerSURes_t *s1ap_E_RABSetupListBearerSURes); + +/** \brief Encode function for S1ap-E-RABModifyItemBearerModResIEs ies. + * \param s1ap_E_RABModifyListBearerModRes Pointer to the ASN1 structure. + * \param s1ap_E_RABModifyItemBearerModResIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabmodifylistbearermodres( + S1ap_E_RABModifyListBearerModRes_t *s1ap_E_RABModifyListBearerModRes, + S1ap_E_RABModifyListBearerModResIEs_t *s1ap_E_RABModifyListBearerModResIEs); + +/** \brief Decode function for S1ap-E-RABModifyItemBearerModResIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rabmodifylistbearermodres( + S1ap_E_RABModifyListBearerModResIEs_t *s1ap_E_RABModifyListBearerModResIEs, + S1ap_E_RABModifyListBearerModRes_t *s1ap_E_RABModifyListBearerModRes); + +/** \brief Encode function for S1ap-E-RABToBeSetupItemCtxtSUReqIEs ies. + * \param s1ap_E_RABToBeSetupListCtxtSUReq Pointer to the ASN1 structure. + * \param s1ap_E_RABToBeSetupItemCtxtSUReqIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabtobesetuplistctxtsureq( + S1ap_E_RABToBeSetupListCtxtSUReq_t *s1ap_E_RABToBeSetupListCtxtSUReq, + S1ap_E_RABToBeSetupListCtxtSUReqIEs_t *s1ap_E_RABToBeSetupListCtxtSUReqIEs); + +/** \brief Decode function for S1ap-E-RABToBeSetupItemCtxtSUReqIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rabtobesetuplistctxtsureq( + S1ap_E_RABToBeSetupListCtxtSUReqIEs_t *s1ap_E_RABToBeSetupListCtxtSUReqIEs, + S1ap_E_RABToBeSetupListCtxtSUReq_t *s1ap_E_RABToBeSetupListCtxtSUReq); + +/** \brief Encode function for S1ap-E-RABInformationListIEs ies. + * \param s1ap_E_RABInformationList Pointer to the ASN1 structure. + * \param s1ap_E_RABInformationListIEs Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_e_rabinformationlist( + S1ap_E_RABInformationList_t *s1ap_E_RABInformationList, + S1ap_E_RABInformationListIEs_t *s1ap_E_RABInformationListIEs); + +/** \brief Decode function for S1ap-E-RABInformationListIEs ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_e_rabinformationlist( + S1ap_E_RABInformationListIEs_t *s1ap_E_RABInformationListIEs, + S1ap_E_RABInformationList_t *s1ap_E_RABInformationList); + +/** \brief Encode function for S1ap-UE-associatedLogicalS1-ConnectionItemResAck ies. + * \param s1ap_UE_associatedLogicalS1_ConnectionListResAck Pointer to the ASN1 structure. + * \param s1ap_UE_associatedLogicalS1_ConnectionItemResAck Pointer to the IES structure. + **/ +int s1ap_encode_s1ap_ue_associatedlogicals1_connectionlistresack( + S1ap_UE_associatedLogicalS1_ConnectionListResAck_t *s1ap_UE_associatedLogicalS1_ConnectionListResAck, + S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs); + +/** \brief Decode function for S1ap-UE-associatedLogicalS1-ConnectionItemResAck ies. + * \param any_p Pointer to the ANY value to decode. + * \param callback Callback function called when any_p is successfully decoded. + **/ +int s1ap_decode_s1ap_ue_associatedlogicals1_connectionlistresack( + S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs, + S1ap_UE_associatedLogicalS1_ConnectionListResAck_t *s1ap_UE_associatedLogicalS1_ConnectionListResAck); + +/** \brief Display S1ap_E_RABFailedtoSetupListHOReqAck message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabfailedtosetuplisthoreqack( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_DeactivateTrace message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_deactivatetrace( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABReleaseListBearerRelComp encapsulated IE using XER encoding. + * \param s1ap_E_RABReleaseItemBearerRelCompIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabreleaselistbearerrelcomp( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABReleaseListBearerRelCompIEs_t *s1ap_E_RABReleaseListBearerRelCompIEs); + +/** \brief Display S1ap_ENBDirectInformationTransfer message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_enbdirectinformationtransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABReleaseResponse message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabreleaseresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UplinkNonUEAssociatedLPPaTransport_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uplinknonueassociatedlppatransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABToBeSetupListHOReq message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobesetuplisthoreq( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_TraceStart message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_tracestart( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_WriteReplaceWarningResponse message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_writereplacewarningresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverCancel message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handovercancel( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverPreparationFailure message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handoverpreparationfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABToBeModifiedListBearerModReq encapsulated IE using XER encoding. + * \param s1ap_E_RABToBeModifiedItemBearerModReqIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobemodifiedlistbearermodreq( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABToBeModifiedListBearerModReqIEs_t *s1ap_E_RABToBeModifiedListBearerModReqIEs); + +/** \brief Display S1ap_UEContextReleaseRequest_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextreleaserequest_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABAdmittedList message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabadmittedlist( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_InitialUEMessage_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_initialuemessage_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_KillRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_killrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_WriteReplaceWarningRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_writereplacewarningrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UECapabilityInfoIndication message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uecapabilityinfoindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABToBeSetupListBearerSUReq encapsulated IE using XER encoding. + * \param s1ap_E_RABToBeSetupItemBearerSUReqIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobesetuplistbearersureq( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABToBeSetupListBearerSUReqIEs_t *s1ap_E_RABToBeSetupListBearerSUReqIEs); + +/** \brief Display S1ap_E_RABDataForwardingList message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabdataforwardinglist( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_LocationReportingFailureIndication message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_locationreportingfailureindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_InitialContextSetupRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_initialcontextsetuprequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_LocationReport message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_locationreport( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UplinkNASTransport_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uplinknastransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UEContextModificationResponse message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextmodificationresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UEContextModificationRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextmodificationrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_LocationReportingControl message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_locationreportingcontrol( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UplinkS1cdma2000tunneling message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uplinks1cdma2000tunneling( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handoverrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverRequired message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handoverrequired( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABToBeSwitchedDLList message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobeswitcheddllist( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_MMEConfigurationUpdateAcknowledge message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_mmeconfigurationupdateacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_KillResponse message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_killresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_MMEStatusTransfer message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_mmestatustransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_MMEConfigurationUpdate message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_mmeconfigurationupdate( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABModifyRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabmodifyrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABSetupListCtxtSURes encapsulated IE using XER encoding. + * \param s1ap_E_RABSetupItemCtxtSUResIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabsetuplistctxtsures( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABSetupListCtxtSUResIEs_t *s1ap_E_RABSetupListCtxtSUResIEs); + +/** \brief Display S1ap_E_RABToBeSwitchedULList message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobeswitchedullist( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_ENBConfigurationUpdateFailure message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_enbconfigurationupdatefailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_Reset message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_reset( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_Bearers_SubjectToStatusTransfer_List encapsulated IE using XER encoding. + * \param s1ap_Bearers_SubjectToStatusTransfer_ItemIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_bearers_subjecttostatustransfer_list( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_Bearers_SubjectToStatusTransfer_ListIEs_t *s1ap_Bearers_SubjectToStatusTransfer_ListIEs); + +/** \brief Display S1ap_E_RABList encapsulated IE using XER encoding. + * \param s1ap_E_RABItemIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rablist( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABListIEs_t *s1ap_E_RABListIEs); + +/** \brief Display S1ap_S1SetupResponse message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_s1setupresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_Paging message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_paging( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_ENBConfigurationUpdateAcknowledge message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_enbconfigurationupdateacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABReleaseCommand message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabreleasecommand( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_PathSwitchRequestFailure message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_pathswitchrequestfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABModifyResponse message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabmodifyresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverNotify message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handovernotify( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverCancelAcknowledge message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handovercancelacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_InitialContextSetupFailure message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_initialcontextsetupfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverCommand message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handovercommand( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_MMEDirectInformationTransfer message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_mmedirectinformationtransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_ErrorIndication message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_errorindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_TAIList encapsulated IE using XER encoding. + * \param s1ap_TAIItemIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_tailist( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_TAIListIEs_t *s1ap_TAIListIEs); + +/** \brief Display S1ap_OverloadStart message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_overloadstart( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_DownlinkNonUEAssociatedLPPaTransport_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_downlinknonueassociatedlppatransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverRequestAcknowledge message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handoverrequestacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_DownlinkUEAssociatedLPPaTransport_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_downlinkueassociatedlppatransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UEContextModificationFailure message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextmodificationfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_MMEConfigurationTransfer message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_mmeconfigurationtransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_PathSwitchRequestAcknowledge message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_pathswitchrequestacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UE_associatedLogicalS1_ConnectionListRes encapsulated IE using XER encoding. + * \param s1ap_UE_associatedLogicalS1_ConnectionItemRes Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_ue_associatedlogicals1_connectionlistres( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_UE_associatedLogicalS1_ConnectionListResIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResIEs); + +/** \brief Display S1ap_S1SetupFailure message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_s1setupfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_MMEConfigurationUpdateFailure message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_mmeconfigurationupdatefailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_InitialContextSetupResponse message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_initialcontextsetupresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_DownlinkS1cdma2000tunneling message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_downlinks1cdma2000tunneling( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_OverloadStop message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_overloadstop( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABSetupListBearerSURes encapsulated IE using XER encoding. + * \param s1ap_E_RABSetupItemBearerSUResIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabsetuplistbearersures( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABSetupListBearerSUResIEs_t *s1ap_E_RABSetupListBearerSUResIEs); + +/** \brief Display S1ap_E_RABModifyListBearerModRes encapsulated IE using XER encoding. + * \param s1ap_E_RABModifyItemBearerModResIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabmodifylistbearermodres( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABModifyListBearerModResIEs_t *s1ap_E_RABModifyListBearerModResIEs); + +/** \brief Display S1ap_E_RABToBeSetupListCtxtSUReq encapsulated IE using XER encoding. + * \param s1ap_E_RABToBeSetupItemCtxtSUReqIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobesetuplistctxtsureq( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABToBeSetupListCtxtSUReqIEs_t *s1ap_E_RABToBeSetupListCtxtSUReqIEs); + +/** \brief Display S1ap_ENBConfigurationUpdate message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_enbconfigurationupdate( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_TraceFailureIndication message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_tracefailureindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABInformationList encapsulated IE using XER encoding. + * \param s1ap_E_RABInformationListIEs Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabinformationlist( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABInformationListIEs_t *s1ap_E_RABInformationListIEs); + +/** \brief Display S1ap_ENBConfigurationTransfer message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_enbconfigurationtransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_HandoverFailure message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_handoverfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UE_associatedLogicalS1_ConnectionListResAck encapsulated IE using XER encoding. + * \param s1ap_UE_associatedLogicalS1_ConnectionItemResAck Pointer to the IES structure. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_ue_associatedlogicals1_connectionlistresack( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResAckIEs); + +/** \brief Display S1ap_E_RABSetupResponse message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabsetupresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UEContextReleaseCommand_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextreleasecommand_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_PathSwitchRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_pathswitchrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_DownlinkNASTransport_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_downlinknastransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABReleaseIndication message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabreleaseindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_S1SetupRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_s1setuprequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_NASNonDeliveryIndication_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_nasnondeliveryindication_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_CellTrafficTrace message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_celltraffictrace( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_E_RABSetupRequest message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabsetuprequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_ENBStatusTransfer message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_enbstatustransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_ResetAcknowledge message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_resetacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UEContextReleaseComplete_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextreleasecomplete_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +/** \brief Display S1ap_UplinkUEAssociatedLPPaTransport_ message using XER encoding. + * \param message_p Pointer to root message. + * \param file File descriptor to write output. + **/ +asn_enc_rval_t s1ap_xer_print_s1ap_uplinkueassociatedlppatransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p); + +int s1ap_xer__print2sp(const void *buffer, size_t size, void *app_key); + +int s1ap_xer__print2fp(const void *buffer, size_t size, void *app_key); + +extern size_t s1ap_string_total_size; + +#endif /* S1AP_IES_DEFS_H_ */ + diff --git a/lib/asn/s1ap_xer_print.c b/lib/asn/s1ap_xer_print.c new file mode 100644 index 0000000000..7ec563825d --- /dev/null +++ b/lib/asn/s1ap_xer_print.c @@ -0,0 +1,2255 @@ +/* + * Copyright (c) 2015, EURECOM (www.eurecom.fr) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those + * of the authors and should not be interpreted as representing official policies, + * either expressed or implied, of the FreeBSD Project. + */ + +/******************************************************************************* + * This file had been created by asn1tostruct.py script v1.0.2 + * Please do not modify this file but regenerate it via script. + * Created on: 2017-02-02 21:30:57.659486 by acetcom + * from ['S1AP-PDU.asn'] + ******************************************************************************/ +#include +#include + +#include +#include + +#include "s1ap_common.h" +#include "s1ap_ies_defs.h" + +size_t s1ap_string_total_size = 0; + +int +s1ap_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 s1ap_xer__print2sp(const void *buffer, size_t size, void *app_key) { + char *string = (char *)app_key; + + /* Copy buffer to the formatted string */ + memcpy(&string[s1ap_string_total_size], buffer, size); + + s1ap_string_total_size += size; + + return 0; +} + +static asn_enc_rval_t +xer_encode_local(asn_TYPE_descriptor_t *td, void *sptr, + asn_app_consume_bytes_f *cb, void *app_key, int indent) { + asn_enc_rval_t er, tmper; + const char *mname; + size_t mlen; + int xcan = 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + _i_ASN_TEXT_INDENT(0, indent); + _ASN_CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->xer_encoder(td, sptr, indent + 1, XER_F_BASIC, cb, app_key); + if(tmper.encoded == -1) return tmper; + + _ASN_CALLBACK3("\n", xcan); + + er.encoded = 4 + xcan + (2 * mlen) + tmper.encoded; + + _ASN_ENCODED_OK(er); +cb_failed: + _ASN_ENCODE_FAILED; +} +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabfailedtosetupitemhoreqack( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABFailedtoSetupItemHOReqAckIEs_t *s1ap_E_RABFailedtoSetupItemHOReqAckIEs; + asn_enc_rval_t er; + s1ap_E_RABFailedtoSetupItemHOReqAckIEs = &message_p->msg.s1ap_E_RABFailedtoSetupItemHOReqAckIEs; + + cb("\n", 45, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 45, app_key); + xer_encode_local(&asn_DEF_S1ap_E_RABFailedToSetupItemHOReqAck, &s1ap_E_RABFailedtoSetupItemHOReqAckIEs->e_RABFailedtoSetupItemHOReqAck, cb, app_key, 2); + cb(" \n", 46, app_key); + cb("\n", 46, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_deactivatetrace( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_DeactivateTraceIEs_t *s1ap_DeactivateTraceIEs; + asn_enc_rval_t er; + s1ap_DeactivateTraceIEs = &message_p->msg.s1ap_DeactivateTraceIEs; + + cb("\n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_DeactivateTraceIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_DeactivateTraceIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_E_UTRAN_Trace_ID, &s1ap_DeactivateTraceIEs->e_UTRAN_Trace_ID, cb, app_key, 2); + cb(" \n", 31, app_key); + cb("\n", 31, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabreleaselistbearerrelcomp( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABReleaseListBearerRelCompIEs_t *s1ap_E_RABReleaseListBearerRelCompIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABReleaseListBearerRelCompIEs->s1ap_E_RABReleaseItemBearerRelComp.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABReleaseItemBearerRelComp, s1ap_E_RABReleaseListBearerRelCompIEs->s1ap_E_RABReleaseItemBearerRelComp.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_enbdirectinformationtransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ENBDirectInformationTransferIEs_t *s1ap_ENBDirectInformationTransferIEs; + asn_enc_rval_t er; + s1ap_ENBDirectInformationTransferIEs = &message_p->msg.s1ap_ENBDirectInformationTransferIEs; + + cb("\n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_Inter_SystemInformationTransferType, &s1ap_ENBDirectInformationTransferIEs->inter_SystemInformationTransferTypeEDT, cb, app_key, 2); + cb(" \n", 44, app_key); + cb("\n", 44, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabreleaseresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABReleaseResponseIEs_t *s1ap_E_RABReleaseResponseIEs; + asn_enc_rval_t er; + s1ap_E_RABReleaseResponseIEs = &message_p->msg.s1ap_E_RABReleaseResponseIEs; + + cb("\n", 35, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 35, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_E_RABReleaseResponseIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_E_RABReleaseResponseIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_E_RABReleaseResponseIEs->presenceMask & S1AP_E_RABRELEASERESPONSEIES_E_RABRELEASELISTBEARERRELCOMP_PRESENT) + s1ap_xer_print_s1ap_e_rabreleaselistbearerrelcomp(cb, app_key, &s1ap_E_RABReleaseResponseIEs->e_RABReleaseListBearerRelComp); + /* Optional field */ + if (s1ap_E_RABReleaseResponseIEs->presenceMask & S1AP_E_RABRELEASERESPONSEIES_E_RABFAILEDTORELEASELIST_PRESENT) + s1ap_xer_print_s1ap_e_rablist(cb, app_key, &s1ap_E_RABReleaseResponseIEs->e_RABFailedToReleaseList); + /* Optional field */ + if (s1ap_E_RABReleaseResponseIEs->presenceMask & S1AP_E_RABRELEASERESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_E_RABReleaseResponseIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 36, app_key); + cb("\n", 36, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uplinknonueassociatedlppatransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UplinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkNonUEAssociatedLPPaTransport_IEs; + asn_enc_rval_t er; + s1ap_UplinkNonUEAssociatedLPPaTransport_IEs = &message_p->msg.s1ap_UplinkNonUEAssociatedLPPaTransport_IEs; + + cb("\n", 50, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 50, app_key); + xer_encode_local(&asn_DEF_S1ap_Routing_ID, &s1ap_UplinkNonUEAssociatedLPPaTransport_IEs->routing_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_LPPa_PDU, &s1ap_UplinkNonUEAssociatedLPPaTransport_IEs->lpPa_PDU, cb, app_key, 2); + cb(" \n", 51, app_key); + cb("\n", 51, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobesetupitemhoreq( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABToBeSetupItemHOReqIEs_t *s1ap_E_RABToBeSetupItemHOReqIEs; + asn_enc_rval_t er; + s1ap_E_RABToBeSetupItemHOReqIEs = &message_p->msg.s1ap_E_RABToBeSetupItemHOReqIEs; + + cb("\n", 38, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 38, app_key); + xer_encode_local(&asn_DEF_S1ap_E_RABToBeSetupItemHOReq, &s1ap_E_RABToBeSetupItemHOReqIEs->e_RABToBeSetupItemHOReq, cb, app_key, 2); + cb(" \n", 39, app_key); + cb("\n", 39, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_tracestart( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_TraceStartIEs_t *s1ap_TraceStartIEs; + asn_enc_rval_t er; + s1ap_TraceStartIEs = &message_p->msg.s1ap_TraceStartIEs; + + cb("\n", 25, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 25, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_TraceStartIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_TraceStartIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_TraceActivation, &s1ap_TraceStartIEs->traceActivation, cb, app_key, 2); + cb(" \n", 26, app_key); + cb("\n", 26, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_writereplacewarningresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_WriteReplaceWarningResponseIEs_t *s1ap_WriteReplaceWarningResponseIEs; + asn_enc_rval_t er; + s1ap_WriteReplaceWarningResponseIEs = &message_p->msg.s1ap_WriteReplaceWarningResponseIEs; + + cb("\n", 42, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 42, app_key); + xer_encode_local(&asn_DEF_S1ap_MessageIdentifier, &s1ap_WriteReplaceWarningResponseIEs->messageIdentifier, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_SerialNumber, &s1ap_WriteReplaceWarningResponseIEs->serialNumber, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningResponseIEs->presenceMask & S1AP_WRITEREPLACEWARNINGRESPONSEIES_BROADCASTCOMPLETEDAREALIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_BroadcastCompletedAreaList, &s1ap_WriteReplaceWarningResponseIEs->broadcastCompletedAreaList, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningResponseIEs->presenceMask & S1AP_WRITEREPLACEWARNINGRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_WriteReplaceWarningResponseIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 43, app_key); + cb("\n", 43, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handovercancel( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverCancelIEs_t *s1ap_HandoverCancelIEs; + asn_enc_rval_t er; + s1ap_HandoverCancelIEs = &message_p->msg.s1ap_HandoverCancelIEs; + + cb("\n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverCancelIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_HandoverCancelIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_HandoverCancelIEs->cause, cb, app_key, 2); + cb(" \n", 30, app_key); + cb("\n", 30, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handoverpreparationfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverPreparationFailureIEs_t *s1ap_HandoverPreparationFailureIEs; + asn_enc_rval_t er; + s1ap_HandoverPreparationFailureIEs = &message_p->msg.s1ap_HandoverPreparationFailureIEs; + + cb("\n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverPreparationFailureIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_HandoverPreparationFailureIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_HandoverPreparationFailureIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverPreparationFailureIEs->presenceMask & S1AP_HANDOVERPREPARATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_HandoverPreparationFailureIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 42, app_key); + cb("\n", 42, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobemodifiedlistbearermodreq( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABToBeModifiedListBearerModReqIEs_t *s1ap_E_RABToBeModifiedListBearerModReqIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABToBeModifiedListBearerModReqIEs->s1ap_E_RABToBeModifiedItemBearerModReq.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABToBeModifiedItemBearerModReq, s1ap_E_RABToBeModifiedListBearerModReqIEs->s1ap_E_RABToBeModifiedItemBearerModReq.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextreleaserequest_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UEContextReleaseRequest_IEs_t *s1ap_UEContextReleaseRequest_IEs; + asn_enc_rval_t er; + s1ap_UEContextReleaseRequest_IEs = &message_p->msg.s1ap_UEContextReleaseRequest_IEs; + + cb("\n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UEContextReleaseRequest_IEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UEContextReleaseRequest_IEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_UEContextReleaseRequest_IEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextReleaseRequest_IEs->presenceMask & S1AP_UECONTEXTRELEASEREQUEST_IES_GWCONTEXTRELEASEINDICATION_PRESENT) + xer_encode_local(&asn_DEF_S1ap_GWContextReleaseIndication, &s1ap_UEContextReleaseRequest_IEs->gwContextReleaseIndication, cb, app_key, 2); + cb(" \n", 40, app_key); + cb("\n", 40, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabadmitteditem( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABAdmittedItemIEs_t *s1ap_E_RABAdmittedItemIEs; + asn_enc_rval_t er; + s1ap_E_RABAdmittedItemIEs = &message_p->msg.s1ap_E_RABAdmittedItemIEs; + + cb("\n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_E_RABAdmittedItem, &s1ap_E_RABAdmittedItemIEs->e_RABAdmittedItem, cb, app_key, 2); + cb(" \n", 33, app_key); + cb("\n", 33, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_initialuemessage_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_InitialUEMessage_IEs_t *s1ap_InitialUEMessage_IEs; + asn_enc_rval_t er; + s1ap_InitialUEMessage_IEs = &message_p->msg.s1ap_InitialUEMessage_IEs; + + cb("\n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_InitialUEMessage_IEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_NAS_PDU, &s1ap_InitialUEMessage_IEs->nas_pdu, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_TAI, &s1ap_InitialUEMessage_IEs->tai, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_EUTRAN_CGI, &s1ap_InitialUEMessage_IEs->eutran_cgi, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_RRC_Establishment_Cause, &s1ap_InitialUEMessage_IEs->rrC_Establishment_Cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_S_TMSI_PRESENT) + xer_encode_local(&asn_DEF_S1ap_S_TMSI, &s1ap_InitialUEMessage_IEs->s_tmsi, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_CSG_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSG_Id, &s1ap_InitialUEMessage_IEs->csG_Id, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_GUMMEI_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_GUMMEI, &s1ap_InitialUEMessage_IEs->gummei_id, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_CELLACCESSMODE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CellAccessMode, &s1ap_InitialUEMessage_IEs->cellAccessMode, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_GW_S1AP_TRANSPORTLAYERADDRESS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_TransportLayerAddress, &s1ap_InitialUEMessage_IEs->gW_S1ap_TransportLayerAddress, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialUEMessage_IEs->presenceMask & S1AP_INITIALUEMESSAGE_IES_RELAYNODE_INDICATOR_PRESENT) + xer_encode_local(&asn_DEF_S1ap_RelayNode_Indicator, &s1ap_InitialUEMessage_IEs->relayNode_Indicator, cb, app_key, 2); + cb(" \n", 33, app_key); + cb("\n", 33, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_killrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_KillRequestIEs_t *s1ap_KillRequestIEs; + asn_enc_rval_t er; + s1ap_KillRequestIEs = &message_p->msg.s1ap_KillRequestIEs; + + cb("\n", 26, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 26, app_key); + xer_encode_local(&asn_DEF_S1ap_MessageIdentifier, &s1ap_KillRequestIEs->messageIdentifier, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_SerialNumber, &s1ap_KillRequestIEs->serialNumber, cb, app_key, 2); + /* Optional field */ + if (s1ap_KillRequestIEs->presenceMask & S1AP_KILLREQUESTIES_WARNINGAREALIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_WarningAreaList, &s1ap_KillRequestIEs->warningAreaList, cb, app_key, 2); + cb(" \n", 27, app_key); + cb("\n", 27, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_writereplacewarningrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_WriteReplaceWarningRequestIEs_t *s1ap_WriteReplaceWarningRequestIEs; + asn_enc_rval_t er; + s1ap_WriteReplaceWarningRequestIEs = &message_p->msg.s1ap_WriteReplaceWarningRequestIEs; + + cb("\n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_MessageIdentifier, &s1ap_WriteReplaceWarningRequestIEs->messageIdentifier, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_SerialNumber, &s1ap_WriteReplaceWarningRequestIEs->serialNumber, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGAREALIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_WarningAreaList, &s1ap_WriteReplaceWarningRequestIEs->warningAreaList, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_RepetitionPeriod, &s1ap_WriteReplaceWarningRequestIEs->repetitionPeriod, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_EXTENDEDREPETITIONPERIOD_PRESENT) + xer_encode_local(&asn_DEF_S1ap_ExtendedRepetitionPeriod, &s1ap_WriteReplaceWarningRequestIEs->extendedRepetitionPeriod, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_NumberofBroadcastRequest, &s1ap_WriteReplaceWarningRequestIEs->numberofBroadcastRequest, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGTYPE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_WarningType, &s1ap_WriteReplaceWarningRequestIEs->warningType, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGSECURITYINFO_PRESENT) + xer_encode_local(&asn_DEF_S1ap_WarningSecurityInfo, &s1ap_WriteReplaceWarningRequestIEs->warningSecurityInfo, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_DATACODINGSCHEME_PRESENT) + xer_encode_local(&asn_DEF_S1ap_DataCodingScheme, &s1ap_WriteReplaceWarningRequestIEs->dataCodingScheme, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_WARNINGMESSAGECONTENTS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_WarningMessageContents, &s1ap_WriteReplaceWarningRequestIEs->warningMessageContents, cb, app_key, 2); + /* Optional field */ + if (s1ap_WriteReplaceWarningRequestIEs->presenceMask & S1AP_WRITEREPLACEWARNINGREQUESTIES_CONCURRENTWARNINGMESSAGEINDICATOR_PRESENT) + xer_encode_local(&asn_DEF_S1ap_ConcurrentWarningMessageIndicator, &s1ap_WriteReplaceWarningRequestIEs->concurrentWarningMessageIndicator, cb, app_key, 2); + cb(" \n", 42, app_key); + cb("\n", 42, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uecapabilityinfoindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UECapabilityInfoIndicationIEs_t *s1ap_UECapabilityInfoIndicationIEs; + asn_enc_rval_t er; + s1ap_UECapabilityInfoIndicationIEs = &message_p->msg.s1ap_UECapabilityInfoIndicationIEs; + + cb("\n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UECapabilityInfoIndicationIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UECapabilityInfoIndicationIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_UERadioCapability, &s1ap_UECapabilityInfoIndicationIEs->ueRadioCapability, cb, app_key, 2); + cb(" \n", 42, app_key); + cb("\n", 42, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobesetuplistbearersureq( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABToBeSetupListBearerSUReqIEs_t *s1ap_E_RABToBeSetupListBearerSUReqIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABToBeSetupListBearerSUReqIEs->s1ap_E_RABToBeSetupItemBearerSUReq.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABToBeSetupItemBearerSUReq, s1ap_E_RABToBeSetupListBearerSUReqIEs->s1ap_E_RABToBeSetupItemBearerSUReq.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabdataforwardingitem( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABDataForwardingItemIEs_t *s1ap_E_RABDataForwardingItemIEs; + asn_enc_rval_t er; + s1ap_E_RABDataForwardingItemIEs = &message_p->msg.s1ap_E_RABDataForwardingItemIEs; + + cb("\n", 38, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 38, app_key); + xer_encode_local(&asn_DEF_S1ap_E_RABDataForwardingItem, &s1ap_E_RABDataForwardingItemIEs->e_RABDataForwardingItem, cb, app_key, 2); + cb(" \n", 39, app_key); + cb("\n", 39, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_locationreportingfailureindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_LocationReportingFailureIndicationIEs_t *s1ap_LocationReportingFailureIndicationIEs; + asn_enc_rval_t er; + s1ap_LocationReportingFailureIndicationIEs = &message_p->msg.s1ap_LocationReportingFailureIndicationIEs; + + cb("\n", 49, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 49, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_LocationReportingFailureIndicationIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_LocationReportingFailureIndicationIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_LocationReportingFailureIndicationIEs->cause, cb, app_key, 2); + cb(" \n", 50, app_key); + cb("\n", 50, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_initialcontextsetuprequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_InitialContextSetupRequestIEs_t *s1ap_InitialContextSetupRequestIEs; + asn_enc_rval_t er; + s1ap_InitialContextSetupRequestIEs = &message_p->msg.s1ap_InitialContextSetupRequestIEs; + + cb("\n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_InitialContextSetupRequestIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_InitialContextSetupRequestIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_UEAggregateMaximumBitrate, &s1ap_InitialContextSetupRequestIEs->uEaggregateMaximumBitrate, cb, app_key, 2); + s1ap_xer_print_s1ap_e_rabtobesetuplistctxtsureq(cb, app_key, &s1ap_InitialContextSetupRequestIEs->e_RABToBeSetupListCtxtSUReq); + xer_encode_local(&asn_DEF_S1ap_UESecurityCapabilities, &s1ap_InitialContextSetupRequestIEs->ueSecurityCapabilities, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_SecurityKey, &s1ap_InitialContextSetupRequestIEs->securityKey, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_TRACEACTIVATION_PRESENT) + xer_encode_local(&asn_DEF_S1ap_TraceActivation, &s1ap_InitialContextSetupRequestIEs->traceActivation, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_HandoverRestrictionList, &s1ap_InitialContextSetupRequestIEs->handoverRestrictionList, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_UERADIOCAPABILITY_PRESENT) + xer_encode_local(&asn_DEF_S1ap_UERadioCapability, &s1ap_InitialContextSetupRequestIEs->ueRadioCapability, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SubscriberProfileIDforRFP, &s1ap_InitialContextSetupRequestIEs->subscriberProfileIDforRFP, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_CSFALLBACKINDICATOR_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSFallbackIndicator, &s1ap_InitialContextSetupRequestIEs->csFallbackIndicator, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SRVCCOperationPossible, &s1ap_InitialContextSetupRequestIEs->srvccOperationPossible, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSGMembershipStatus, &s1ap_InitialContextSetupRequestIEs->csgMembershipStatus, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_REGISTEREDLAI_PRESENT) + xer_encode_local(&asn_DEF_S1ap_LAI, &s1ap_InitialContextSetupRequestIEs->registeredLAI, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_GUMMEI_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_GUMMEI, &s1ap_InitialContextSetupRequestIEs->gummei_id, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_MME_UE_S1AP_ID_2_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_InitialContextSetupRequestIEs->mme_ue_s1ap_id_2, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupRequestIEs->presenceMask & S1AP_INITIALCONTEXTSETUPREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT) + xer_encode_local(&asn_DEF_S1ap_ManagementBasedMDTAllowed, &s1ap_InitialContextSetupRequestIEs->managementBasedMDTAllowed, cb, app_key, 2); + cb(" \n", 42, app_key); + cb("\n", 42, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_locationreport( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_LocationReportIEs_t *s1ap_LocationReportIEs; + asn_enc_rval_t er; + s1ap_LocationReportIEs = &message_p->msg.s1ap_LocationReportIEs; + + cb("\n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_LocationReportIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_LocationReportIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_EUTRAN_CGI, &s1ap_LocationReportIEs->eutran_cgi, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_TAI, &s1ap_LocationReportIEs->tai, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_RequestType, &s1ap_LocationReportIEs->requestType, cb, app_key, 2); + cb(" \n", 30, app_key); + cb("\n", 30, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uplinknastransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UplinkNASTransport_IEs_t *s1ap_UplinkNASTransport_IEs; + asn_enc_rval_t er; + s1ap_UplinkNASTransport_IEs = &message_p->msg.s1ap_UplinkNASTransport_IEs; + + cb("\n", 34, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 34, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UplinkNASTransport_IEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UplinkNASTransport_IEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_NAS_PDU, &s1ap_UplinkNASTransport_IEs->nas_pdu, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_EUTRAN_CGI, &s1ap_UplinkNASTransport_IEs->eutran_cgi, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_TAI, &s1ap_UplinkNASTransport_IEs->tai, cb, app_key, 2); + /* Optional field */ + if (s1ap_UplinkNASTransport_IEs->presenceMask & S1AP_UPLINKNASTRANSPORT_IES_GW_S1AP_TRANSPORTLAYERADDRESS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_TransportLayerAddress, &s1ap_UplinkNASTransport_IEs->gW_S1ap_TransportLayerAddress, cb, app_key, 2); + cb(" \n", 35, app_key); + cb("\n", 35, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextmodificationresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UEContextModificationResponseIEs_t *s1ap_UEContextModificationResponseIEs; + asn_enc_rval_t er; + s1ap_UEContextModificationResponseIEs = &message_p->msg.s1ap_UEContextModificationResponseIEs; + + cb("\n", 44, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 44, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UEContextModificationResponseIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UEContextModificationResponseIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationResponseIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_UEContextModificationResponseIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 45, app_key); + cb("\n", 45, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextmodificationrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UEContextModificationRequestIEs_t *s1ap_UEContextModificationRequestIEs; + asn_enc_rval_t er; + s1ap_UEContextModificationRequestIEs = &message_p->msg.s1ap_UEContextModificationRequestIEs; + + cb("\n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UEContextModificationRequestIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UEContextModificationRequestIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_SECURITYKEY_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SecurityKey, &s1ap_UEContextModificationRequestIEs->securityKey, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_SUBSCRIBERPROFILEIDFORRFP_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SubscriberProfileIDforRFP, &s1ap_UEContextModificationRequestIEs->subscriberProfileIDforRFP, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_UEAggregateMaximumBitrate, &s1ap_UEContextModificationRequestIEs->uEaggregateMaximumBitrate, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSFALLBACKINDICATOR_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSFallbackIndicator, &s1ap_UEContextModificationRequestIEs->csFallbackIndicator, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_UESECURITYCAPABILITIES_PRESENT) + xer_encode_local(&asn_DEF_S1ap_UESecurityCapabilities, &s1ap_UEContextModificationRequestIEs->ueSecurityCapabilities, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSGMembershipStatus, &s1ap_UEContextModificationRequestIEs->csgMembershipStatus, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationRequestIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONREQUESTIES_REGISTEREDLAI_PRESENT) + xer_encode_local(&asn_DEF_S1ap_LAI, &s1ap_UEContextModificationRequestIEs->registeredLAI, cb, app_key, 2); + cb(" \n", 44, app_key); + cb("\n", 44, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_locationreportingcontrol( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_LocationReportingControlIEs_t *s1ap_LocationReportingControlIEs; + asn_enc_rval_t er; + s1ap_LocationReportingControlIEs = &message_p->msg.s1ap_LocationReportingControlIEs; + + cb("\n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_LocationReportingControlIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_LocationReportingControlIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_RequestType, &s1ap_LocationReportingControlIEs->requestType, cb, app_key, 2); + cb(" \n", 40, app_key); + cb("\n", 40, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uplinks1cdma2000tunneling( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UplinkS1cdma2000tunnelingIEs_t *s1ap_UplinkS1cdma2000tunnelingIEs; + asn_enc_rval_t er; + s1ap_UplinkS1cdma2000tunnelingIEs = &message_p->msg.s1ap_UplinkS1cdma2000tunnelingIEs; + + cb("\n", 40, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 40, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UplinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UplinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cdma2000RATType, &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000RATType, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cdma2000SectorID, &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000SectorID, cb, app_key, 2); + /* Optional field */ + if (s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask & S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000HOREQUIREDINDICATION_PRESENT) + xer_encode_local(&asn_DEF_S1ap_Cdma2000HORequiredIndication, &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000HORequiredIndication, cb, app_key, 2); + /* Optional field */ + if (s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask & S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXSRVCCINFO_PRESENT) + xer_encode_local(&asn_DEF_S1ap_Cdma2000OneXSRVCCInfo, &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000OneXSRVCCInfo, cb, app_key, 2); + /* Optional field */ + if (s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask & S1AP_UPLINKS1CDMA2000TUNNELINGIES_CDMA2000ONEXRAND_PRESENT) + xer_encode_local(&asn_DEF_S1ap_Cdma2000OneXRAND, &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000OneXRAND, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cdma2000PDU, &s1ap_UplinkS1cdma2000tunnelingIEs->cdma2000PDU, cb, app_key, 2); + /* Optional field */ + if (s1ap_UplinkS1cdma2000tunnelingIEs->presenceMask & S1AP_UPLINKS1CDMA2000TUNNELINGIES_EUTRANROUNDTRIPDELAYESTIMATIONINFO_PRESENT) + xer_encode_local(&asn_DEF_S1ap_EUTRANRoundTripDelayEstimationInfo, &s1ap_UplinkS1cdma2000tunnelingIEs->eutranRoundTripDelayEstimationInfo, cb, app_key, 2); + cb(" \n", 41, app_key); + cb("\n", 41, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handoverrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverRequestIEs_t *s1ap_HandoverRequestIEs; + asn_enc_rval_t er; + s1ap_HandoverRequestIEs = &message_p->msg.s1ap_HandoverRequestIEs; + + cb("\n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverRequestIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_HandoverType, &s1ap_HandoverRequestIEs->handoverType, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_HandoverRequestIEs->cause, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_UEAggregateMaximumBitrate, &s1ap_HandoverRequestIEs->uEaggregateMaximumBitrate, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_E_RABToBeSetupListHOReq, &s1ap_HandoverRequestIEs->e_RABToBeSetupListHOReq, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Source_ToTarget_TransparentContainer, &s1ap_HandoverRequestIEs->source_ToTarget_TransparentContainer, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_UESecurityCapabilities, &s1ap_HandoverRequestIEs->ueSecurityCapabilities, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_HANDOVERRESTRICTIONLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_HandoverRestrictionList, &s1ap_HandoverRequestIEs->handoverRestrictionList, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_TRACEACTIVATION_PRESENT) + xer_encode_local(&asn_DEF_S1ap_TraceActivation, &s1ap_HandoverRequestIEs->traceActivation, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_REQUESTTYPE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_RequestType, &s1ap_HandoverRequestIEs->requestType, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_SRVCCOPERATIONPOSSIBLE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SRVCCOperationPossible, &s1ap_HandoverRequestIEs->srvccOperationPossible, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_SecurityContext, &s1ap_HandoverRequestIEs->securityContext, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_CSG_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSG_Id, &s1ap_HandoverRequestIEs->csG_Id, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_CSGMEMBERSHIPSTATUS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSGMembershipStatus, &s1ap_HandoverRequestIEs->csgMembershipStatus, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_GUMMEI_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_GUMMEI, &s1ap_HandoverRequestIEs->gummei_id, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_MME_UE_S1AP_ID_2_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverRequestIEs->mme_ue_s1ap_id_2, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestIEs->presenceMask & S1AP_HANDOVERREQUESTIES_MANAGEMENTBASEDMDTALLOWED_PRESENT) + xer_encode_local(&asn_DEF_S1ap_ManagementBasedMDTAllowed, &s1ap_HandoverRequestIEs->managementBasedMDTAllowed, cb, app_key, 2); + cb(" \n", 31, app_key); + cb("\n", 31, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handoverrequired( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverRequiredIEs_t *s1ap_HandoverRequiredIEs; + asn_enc_rval_t er; + s1ap_HandoverRequiredIEs = &message_p->msg.s1ap_HandoverRequiredIEs; + + cb("\n", 31, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 31, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverRequiredIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_HandoverRequiredIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_HandoverType, &s1ap_HandoverRequiredIEs->handoverType, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_HandoverRequiredIEs->cause, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_TargetID, &s1ap_HandoverRequiredIEs->targetID, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT) + xer_encode_local(&asn_DEF_S1ap_Direct_Forwarding_Path_Availability, &s1ap_HandoverRequiredIEs->direct_Forwarding_Path_Availability, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_SRVCCHOINDICATION_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SRVCCHOIndication, &s1ap_HandoverRequiredIEs->srvcchoIndication, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Source_ToTarget_TransparentContainer, &s1ap_HandoverRequiredIEs->source_ToTarget_TransparentContainer, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_SOURCE_TOTARGET_TRANSPARENTCONTAINER_SECONDARY_PRESENT) + xer_encode_local(&asn_DEF_S1ap_Source_ToTarget_TransparentContainer, &s1ap_HandoverRequiredIEs->source_ToTarget_TransparentContainer_Secondary, cb, app_key, 2); + /* Conditional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_MSCLASSMARK2_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MSClassmark2, &s1ap_HandoverRequiredIEs->msClassmark2, cb, app_key, 2); + /* Conditional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_MSCLASSMARK3_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MSClassmark3, &s1ap_HandoverRequiredIEs->msClassmark3, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_CSG_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSG_Id, &s1ap_HandoverRequiredIEs->csG_Id, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_CELLACCESSMODE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CellAccessMode, &s1ap_HandoverRequiredIEs->cellAccessMode, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequiredIEs->presenceMask & S1AP_HANDOVERREQUIREDIES_PS_SERVICENOTAVAILABLE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_PS_ServiceNotAvailable, &s1ap_HandoverRequiredIEs->pS_ServiceNotAvailable, cb, app_key, 2); + cb(" \n", 32, app_key); + cb("\n", 32, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobeswitcheddlitem( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABToBeSwitchedDLItemIEs_t *s1ap_E_RABToBeSwitchedDLItemIEs; + asn_enc_rval_t er; + s1ap_E_RABToBeSwitchedDLItemIEs = &message_p->msg.s1ap_E_RABToBeSwitchedDLItemIEs; + + cb("\n", 38, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 38, app_key); + xer_encode_local(&asn_DEF_S1ap_E_RABToBeSwitchedDLItem, &s1ap_E_RABToBeSwitchedDLItemIEs->e_RABToBeSwitchedDLItem, cb, app_key, 2); + cb(" \n", 39, app_key); + cb("\n", 39, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_mmeconfigurationupdateacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_MMEConfigurationUpdateAcknowledgeIEs_t *s1ap_MMEConfigurationUpdateAcknowledgeIEs; + asn_enc_rval_t er; + s1ap_MMEConfigurationUpdateAcknowledgeIEs = &message_p->msg.s1ap_MMEConfigurationUpdateAcknowledgeIEs; + + cb("\n", 48, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 48, app_key); + /* Optional field */ + if (s1ap_MMEConfigurationUpdateAcknowledgeIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_MMEConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 49, app_key); + cb("\n", 49, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_killresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_KillResponseIEs_t *s1ap_KillResponseIEs; + asn_enc_rval_t er; + s1ap_KillResponseIEs = &message_p->msg.s1ap_KillResponseIEs; + + cb("\n", 27, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 27, app_key); + xer_encode_local(&asn_DEF_S1ap_MessageIdentifier, &s1ap_KillResponseIEs->messageIdentifier, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_SerialNumber, &s1ap_KillResponseIEs->serialNumber, cb, app_key, 2); + /* Optional field */ + if (s1ap_KillResponseIEs->presenceMask & S1AP_KILLRESPONSEIES_BROADCASTCANCELLEDAREALIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_BroadcastCancelledAreaList, &s1ap_KillResponseIEs->broadcastCancelledAreaList, cb, app_key, 2); + /* Optional field */ + if (s1ap_KillResponseIEs->presenceMask & S1AP_KILLRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_KillResponseIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 28, app_key); + cb("\n", 28, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_mmestatustransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_MMEStatusTransferIEs_t *s1ap_MMEStatusTransferIEs; + asn_enc_rval_t er; + s1ap_MMEStatusTransferIEs = &message_p->msg.s1ap_MMEStatusTransferIEs; + + cb("\n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_MMEStatusTransferIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_MMEStatusTransferIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, &s1ap_MMEStatusTransferIEs->eNB_StatusTransfer_TransparentContainer, cb, app_key, 2); + cb(" \n", 33, app_key); + cb("\n", 33, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_mmeconfigurationupdate( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_MMEConfigurationUpdateIEs_t *s1ap_MMEConfigurationUpdateIEs; + asn_enc_rval_t er; + s1ap_MMEConfigurationUpdateIEs = &message_p->msg.s1ap_MMEConfigurationUpdateIEs; + + cb("\n", 37, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 37, app_key); + /* Optional field */ + if (s1ap_MMEConfigurationUpdateIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEIES_MMENAME_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MMEname, &s1ap_MMEConfigurationUpdateIEs->mmEname, cb, app_key, 2); + /* Optional field */ + if (s1ap_MMEConfigurationUpdateIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEIES_SERVEDGUMMEIS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_ServedGUMMEIs, &s1ap_MMEConfigurationUpdateIEs->servedGUMMEIs, cb, app_key, 2); + /* Optional field */ + if (s1ap_MMEConfigurationUpdateIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEIES_RELATIVEMMECAPACITY_PRESENT) + xer_encode_local(&asn_DEF_S1ap_RelativeMMECapacity, &s1ap_MMEConfigurationUpdateIEs->relativeMMECapacity, cb, app_key, 2); + cb(" \n", 38, app_key); + cb("\n", 38, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabmodifyrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABModifyRequestIEs_t *s1ap_E_RABModifyRequestIEs; + asn_enc_rval_t er; + s1ap_E_RABModifyRequestIEs = &message_p->msg.s1ap_E_RABModifyRequestIEs; + + cb("\n", 33, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 33, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_E_RABModifyRequestIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_E_RABModifyRequestIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_E_RABModifyRequestIEs->presenceMask & S1AP_E_RABMODIFYREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_UEAggregateMaximumBitrate, &s1ap_E_RABModifyRequestIEs->uEaggregateMaximumBitrate, cb, app_key, 2); + s1ap_xer_print_s1ap_e_rabtobemodifiedlistbearermodreq(cb, app_key, &s1ap_E_RABModifyRequestIEs->e_RABToBeModifiedListBearerModReq); + cb(" \n", 34, app_key); + cb("\n", 34, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabsetuplistctxtsures( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABSetupListCtxtSUResIEs_t *s1ap_E_RABSetupListCtxtSUResIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABSetupListCtxtSUResIEs->s1ap_E_RABSetupItemCtxtSURes.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABSetupItemCtxtSURes, s1ap_E_RABSetupListCtxtSUResIEs->s1ap_E_RABSetupItemCtxtSURes.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobeswitchedulitem( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABToBeSwitchedULItemIEs_t *s1ap_E_RABToBeSwitchedULItemIEs; + asn_enc_rval_t er; + s1ap_E_RABToBeSwitchedULItemIEs = &message_p->msg.s1ap_E_RABToBeSwitchedULItemIEs; + + cb("\n", 38, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 38, app_key); + xer_encode_local(&asn_DEF_S1ap_E_RABToBeSwitchedULItem, &s1ap_E_RABToBeSwitchedULItemIEs->e_RABToBeSwitchedULItem, cb, app_key, 2); + cb(" \n", 39, app_key); + cb("\n", 39, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_enbconfigurationupdatefailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ENBConfigurationUpdateFailureIEs_t *s1ap_ENBConfigurationUpdateFailureIEs; + asn_enc_rval_t er; + s1ap_ENBConfigurationUpdateFailureIEs = &message_p->msg.s1ap_ENBConfigurationUpdateFailureIEs; + + cb("\n", 44, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 44, app_key); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_ENBConfigurationUpdateFailureIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_ENBConfigurationUpdateFailureIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT) + xer_encode_local(&asn_DEF_S1ap_TimeToWait, &s1ap_ENBConfigurationUpdateFailureIEs->timeToWait, cb, app_key, 2); + /* Optional field */ + if (s1ap_ENBConfigurationUpdateFailureIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_ENBConfigurationUpdateFailureIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 45, app_key); + cb("\n", 45, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_reset( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ResetIEs_t *s1ap_ResetIEs; + asn_enc_rval_t er; + s1ap_ResetIEs = &message_p->msg.s1ap_ResetIEs; + + cb("\n", 20, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 20, app_key); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_ResetIEs->cause, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ResetType, &s1ap_ResetIEs->resetType, cb, app_key, 2); + cb(" \n", 21, app_key); + cb("\n", 21, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_bearers_subjecttostatustransfer_list( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_Bearers_SubjectToStatusTransfer_ListIEs_t *s1ap_Bearers_SubjectToStatusTransfer_ListIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_Bearers_SubjectToStatusTransfer_ListIEs->s1ap_Bearers_SubjectToStatusTransfer_Item.count; i++) { + er = xer_encode(&asn_DEF_S1ap_Bearers_SubjectToStatusTransfer_Item, s1ap_Bearers_SubjectToStatusTransfer_ListIEs->s1ap_Bearers_SubjectToStatusTransfer_Item.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rablist( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABListIEs_t *s1ap_E_RABListIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABListIEs->s1ap_E_RABItem.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABItem, s1ap_E_RABListIEs->s1ap_E_RABItem.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_s1setupresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_S1SetupResponseIEs_t *s1ap_S1SetupResponseIEs; + asn_enc_rval_t er; + s1ap_S1SetupResponseIEs = &message_p->msg.s1ap_S1SetupResponseIEs; + + cb("\n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 30, app_key); + /* Optional field */ + if (s1ap_S1SetupResponseIEs->presenceMask & S1AP_S1SETUPRESPONSEIES_MMENAME_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MMEname, &s1ap_S1SetupResponseIEs->mmEname, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ServedGUMMEIs, &s1ap_S1SetupResponseIEs->servedGUMMEIs, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_RelativeMMECapacity, &s1ap_S1SetupResponseIEs->relativeMMECapacity, cb, app_key, 2); + /* Optional field */ + if (s1ap_S1SetupResponseIEs->presenceMask & S1AP_S1SETUPRESPONSEIES_MMERELAYSUPPORTINDICATOR_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MMERelaySupportIndicator, &s1ap_S1SetupResponseIEs->mmeRelaySupportIndicator, cb, app_key, 2); + /* Optional field */ + if (s1ap_S1SetupResponseIEs->presenceMask & S1AP_S1SETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_S1SetupResponseIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 31, app_key); + cb("\n", 31, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_paging( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_PagingIEs_t *s1ap_PagingIEs; + asn_enc_rval_t er; + s1ap_PagingIEs = &message_p->msg.s1ap_PagingIEs; + + cb("\n", 21, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 21, app_key); + xer_encode_local(&asn_DEF_S1ap_UEIdentityIndexValue, &s1ap_PagingIEs->ueIdentityIndexValue, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_UEPagingID, &s1ap_PagingIEs->uePagingID, cb, app_key, 2); + /* Optional field */ + if (s1ap_PagingIEs->presenceMask & S1AP_PAGINGIES_PAGINGDRX_PRESENT) + xer_encode_local(&asn_DEF_S1ap_PagingDRX, &s1ap_PagingIEs->pagingDRX, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_CNDomain, &s1ap_PagingIEs->cnDomain, cb, app_key, 2); + s1ap_xer_print_s1ap_tailist(cb, app_key, &s1ap_PagingIEs->taiList); + /* Optional field */ + if (s1ap_PagingIEs->presenceMask & S1AP_PAGINGIES_CSG_IDLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSG_IdList, &s1ap_PagingIEs->csG_IdList, cb, app_key, 2); + /* Optional field */ + if (s1ap_PagingIEs->presenceMask & S1AP_PAGINGIES_PAGINGPRIORITY_PRESENT) + xer_encode_local(&asn_DEF_S1ap_PagingPriority, &s1ap_PagingIEs->pagingPriority, cb, app_key, 2); + cb(" \n", 22, app_key); + cb("\n", 22, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_enbconfigurationupdateacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ENBConfigurationUpdateAcknowledgeIEs_t *s1ap_ENBConfigurationUpdateAcknowledgeIEs; + asn_enc_rval_t er; + s1ap_ENBConfigurationUpdateAcknowledgeIEs = &message_p->msg.s1ap_ENBConfigurationUpdateAcknowledgeIEs; + + cb("\n", 48, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 48, app_key); + /* Optional field */ + if (s1ap_ENBConfigurationUpdateAcknowledgeIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_ENBConfigurationUpdateAcknowledgeIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 49, app_key); + cb("\n", 49, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabreleasecommand( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABReleaseCommandIEs_t *s1ap_E_RABReleaseCommandIEs; + asn_enc_rval_t er; + s1ap_E_RABReleaseCommandIEs = &message_p->msg.s1ap_E_RABReleaseCommandIEs; + + cb("\n", 34, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 34, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_E_RABReleaseCommandIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_E_RABReleaseCommandIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_E_RABReleaseCommandIEs->presenceMask & S1AP_E_RABRELEASECOMMANDIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_UEAggregateMaximumBitrate, &s1ap_E_RABReleaseCommandIEs->uEaggregateMaximumBitrate, cb, app_key, 2); + s1ap_xer_print_s1ap_e_rablist(cb, app_key, &s1ap_E_RABReleaseCommandIEs->e_RABToBeReleasedList); + /* Optional field */ + if (s1ap_E_RABReleaseCommandIEs->presenceMask & S1AP_E_RABRELEASECOMMANDIES_NAS_PDU_PRESENT) + xer_encode_local(&asn_DEF_S1ap_NAS_PDU, &s1ap_E_RABReleaseCommandIEs->nas_pdu, cb, app_key, 2); + cb(" \n", 35, app_key); + cb("\n", 35, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_pathswitchrequestfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_PathSwitchRequestFailureIEs_t *s1ap_PathSwitchRequestFailureIEs; + asn_enc_rval_t er; + s1ap_PathSwitchRequestFailureIEs = &message_p->msg.s1ap_PathSwitchRequestFailureIEs; + + cb("\n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_PathSwitchRequestFailureIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_PathSwitchRequestFailureIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_PathSwitchRequestFailureIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestFailureIEs->presenceMask & S1AP_PATHSWITCHREQUESTFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_PathSwitchRequestFailureIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 40, app_key); + cb("\n", 40, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabmodifyresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABModifyResponseIEs_t *s1ap_E_RABModifyResponseIEs; + asn_enc_rval_t er; + s1ap_E_RABModifyResponseIEs = &message_p->msg.s1ap_E_RABModifyResponseIEs; + + cb("\n", 34, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 34, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_E_RABModifyResponseIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_E_RABModifyResponseIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_E_RABModifyResponseIEs->presenceMask & S1AP_E_RABMODIFYRESPONSEIES_E_RABMODIFYLISTBEARERMODRES_PRESENT) + s1ap_xer_print_s1ap_e_rabmodifylistbearermodres(cb, app_key, &s1ap_E_RABModifyResponseIEs->e_RABModifyListBearerModRes); + /* Optional field */ + if (s1ap_E_RABModifyResponseIEs->presenceMask & S1AP_E_RABMODIFYRESPONSEIES_E_RABFAILEDTOMODIFYLIST_PRESENT) + s1ap_xer_print_s1ap_e_rablist(cb, app_key, &s1ap_E_RABModifyResponseIEs->e_RABFailedToModifyList); + /* Optional field */ + if (s1ap_E_RABModifyResponseIEs->presenceMask & S1AP_E_RABMODIFYRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_E_RABModifyResponseIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 35, app_key); + cb("\n", 35, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handovernotify( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverNotifyIEs_t *s1ap_HandoverNotifyIEs; + asn_enc_rval_t er; + s1ap_HandoverNotifyIEs = &message_p->msg.s1ap_HandoverNotifyIEs; + + cb("\n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverNotifyIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_HandoverNotifyIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_EUTRAN_CGI, &s1ap_HandoverNotifyIEs->eutran_cgi, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_TAI, &s1ap_HandoverNotifyIEs->tai, cb, app_key, 2); + cb(" \n", 30, app_key); + cb("\n", 30, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handovercancelacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverCancelAcknowledgeIEs_t *s1ap_HandoverCancelAcknowledgeIEs; + asn_enc_rval_t er; + s1ap_HandoverCancelAcknowledgeIEs = &message_p->msg.s1ap_HandoverCancelAcknowledgeIEs; + + cb("\n", 40, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 40, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverCancelAcknowledgeIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_HandoverCancelAcknowledgeIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverCancelAcknowledgeIEs->presenceMask & S1AP_HANDOVERCANCELACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_HandoverCancelAcknowledgeIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 41, app_key); + cb("\n", 41, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_initialcontextsetupfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_InitialContextSetupFailureIEs_t *s1ap_InitialContextSetupFailureIEs; + asn_enc_rval_t er; + s1ap_InitialContextSetupFailureIEs = &message_p->msg.s1ap_InitialContextSetupFailureIEs; + + cb("\n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_InitialContextSetupFailureIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_InitialContextSetupFailureIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_InitialContextSetupFailureIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_InitialContextSetupFailureIEs->presenceMask & S1AP_INITIALCONTEXTSETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_InitialContextSetupFailureIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 42, app_key); + cb("\n", 42, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handovercommand( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverCommandIEs_t *s1ap_HandoverCommandIEs; + asn_enc_rval_t er; + s1ap_HandoverCommandIEs = &message_p->msg.s1ap_HandoverCommandIEs; + + cb("\n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverCommandIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_HandoverCommandIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_HandoverType, &s1ap_HandoverCommandIEs->handoverType, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverCommandIEs->presenceMask & S1AP_HANDOVERCOMMANDIES_E_RABSUBJECTTODATAFORWARDINGLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, &s1ap_HandoverCommandIEs->e_RABSubjecttoDataForwardingList, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverCommandIEs->presenceMask & S1AP_HANDOVERCOMMANDIES_E_RABTORELEASELISTHOCMD_PRESENT) + s1ap_xer_print_s1ap_e_rablist(cb, app_key, &s1ap_HandoverCommandIEs->e_RABtoReleaseListHOCmd); + xer_encode_local(&asn_DEF_S1ap_Target_ToSource_TransparentContainer, &s1ap_HandoverCommandIEs->target_ToSource_TransparentContainer, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverCommandIEs->presenceMask & S1AP_HANDOVERCOMMANDIES_TARGET_TOSOURCE_TRANSPARENTCONTAINER_SECONDARY_PRESENT) + xer_encode_local(&asn_DEF_S1ap_Target_ToSource_TransparentContainer, &s1ap_HandoverCommandIEs->target_ToSource_TransparentContainer_Secondary, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverCommandIEs->presenceMask & S1AP_HANDOVERCOMMANDIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_HandoverCommandIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 31, app_key); + cb("\n", 31, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_mmedirectinformationtransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_MMEDirectInformationTransferIEs_t *s1ap_MMEDirectInformationTransferIEs; + asn_enc_rval_t er; + s1ap_MMEDirectInformationTransferIEs = &message_p->msg.s1ap_MMEDirectInformationTransferIEs; + + cb("\n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_Inter_SystemInformationTransferType, &s1ap_MMEDirectInformationTransferIEs->inter_SystemInformationTransferTypeMDT, cb, app_key, 2); + cb(" \n", 44, app_key); + cb("\n", 44, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_errorindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ErrorIndicationIEs_t *s1ap_ErrorIndicationIEs; + asn_enc_rval_t er; + s1ap_ErrorIndicationIEs = &message_p->msg.s1ap_ErrorIndicationIEs; + + cb("\n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 30, app_key); + /* Optional field */ + if (s1ap_ErrorIndicationIEs->presenceMask & S1AP_ERRORINDICATIONIES_MME_UE_S1AP_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_ErrorIndicationIEs->mme_ue_s1ap_id, cb, app_key, 2); + /* Optional field */ + if (s1ap_ErrorIndicationIEs->presenceMask & S1AP_ERRORINDICATIONIES_ENB_UE_S1AP_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_ErrorIndicationIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_ErrorIndicationIEs->presenceMask & S1AP_ERRORINDICATIONIES_CAUSE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_ErrorIndicationIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_ErrorIndicationIEs->presenceMask & S1AP_ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_ErrorIndicationIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 31, app_key); + cb("\n", 31, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_tailist( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_TAIListIEs_t *s1ap_TAIListIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_TAIListIEs->s1ap_TAIItem.count; i++) { + er = xer_encode(&asn_DEF_S1ap_TAIItem, s1ap_TAIListIEs->s1ap_TAIItem.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_overloadstart( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_OverloadStartIEs_t *s1ap_OverloadStartIEs; + asn_enc_rval_t er; + s1ap_OverloadStartIEs = &message_p->msg.s1ap_OverloadStartIEs; + + cb("\n", 28, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 28, app_key); + xer_encode_local(&asn_DEF_S1ap_OverloadResponse, &s1ap_OverloadStartIEs->overloadResponse, cb, app_key, 2); + /* Optional field */ + if (s1ap_OverloadStartIEs->presenceMask & S1AP_OVERLOADSTARTIES_GUMMEILIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_GUMMEIList, &s1ap_OverloadStartIEs->gummeiList, cb, app_key, 2); + /* Optional field */ + if (s1ap_OverloadStartIEs->presenceMask & S1AP_OVERLOADSTARTIES_TRAFFICLOADREDUCTIONINDICATION_PRESENT) + xer_encode_local(&asn_DEF_S1ap_TrafficLoadReductionIndication, &s1ap_OverloadStartIEs->trafficLoadReductionIndication, cb, app_key, 2); + cb(" \n", 29, app_key); + cb("\n", 29, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_downlinknonueassociatedlppatransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_DownlinkNonUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs; + asn_enc_rval_t er; + s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs = &message_p->msg.s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs; + + cb("\n", 52, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 52, app_key); + xer_encode_local(&asn_DEF_S1ap_Routing_ID, &s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs->routing_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_LPPa_PDU, &s1ap_DownlinkNonUEAssociatedLPPaTransport_IEs->lpPa_PDU, cb, app_key, 2); + cb(" \n", 53, app_key); + cb("\n", 53, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handoverrequestacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverRequestAcknowledgeIEs_t *s1ap_HandoverRequestAcknowledgeIEs; + asn_enc_rval_t er; + s1ap_HandoverRequestAcknowledgeIEs = &message_p->msg.s1ap_HandoverRequestAcknowledgeIEs; + + cb("\n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 41, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverRequestAcknowledgeIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_HandoverRequestAcknowledgeIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_E_RABAdmittedList, &s1ap_HandoverRequestAcknowledgeIEs->e_RABAdmittedList, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestAcknowledgeIEs->presenceMask & S1AP_HANDOVERREQUESTACKNOWLEDGEIES_E_RABFAILEDTOSETUPLISTHOREQACK_PRESENT) + xer_encode_local(&asn_DEF_S1ap_E_RABFailedtoSetupListHOReqAck, &s1ap_HandoverRequestAcknowledgeIEs->e_RABFailedToSetupListHOReqAck, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Target_ToSource_TransparentContainer, &s1ap_HandoverRequestAcknowledgeIEs->target_ToSource_TransparentContainer, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestAcknowledgeIEs->presenceMask & S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CSG_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSG_Id, &s1ap_HandoverRequestAcknowledgeIEs->csG_Id, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverRequestAcknowledgeIEs->presenceMask & S1AP_HANDOVERREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_HandoverRequestAcknowledgeIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 42, app_key); + cb("\n", 42, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_downlinkueassociatedlppatransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_DownlinkUEAssociatedLPPaTransport_IEs_t *s1ap_DownlinkUEAssociatedLPPaTransport_IEs; + asn_enc_rval_t er; + s1ap_DownlinkUEAssociatedLPPaTransport_IEs = &message_p->msg.s1ap_DownlinkUEAssociatedLPPaTransport_IEs; + + cb("\n", 49, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 49, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Routing_ID, &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->routing_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_LPPa_PDU, &s1ap_DownlinkUEAssociatedLPPaTransport_IEs->lpPa_PDU, cb, app_key, 2); + cb(" \n", 50, app_key); + cb("\n", 50, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextmodificationfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UEContextModificationFailureIEs_t *s1ap_UEContextModificationFailureIEs; + asn_enc_rval_t er; + s1ap_UEContextModificationFailureIEs = &message_p->msg.s1ap_UEContextModificationFailureIEs; + + cb("\n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UEContextModificationFailureIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UEContextModificationFailureIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_UEContextModificationFailureIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextModificationFailureIEs->presenceMask & S1AP_UECONTEXTMODIFICATIONFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_UEContextModificationFailureIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 44, app_key); + cb("\n", 44, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_mmeconfigurationtransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_MMEConfigurationTransferIEs_t *s1ap_MMEConfigurationTransferIEs; + asn_enc_rval_t er; + s1ap_MMEConfigurationTransferIEs = &message_p->msg.s1ap_MMEConfigurationTransferIEs; + + cb("\n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 39, app_key); + /* Optional field */ + if (s1ap_MMEConfigurationTransferIEs->presenceMask & S1AP_MMECONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERMCT_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SONConfigurationTransfer, &s1ap_MMEConfigurationTransferIEs->sonConfigurationTransferMCT, cb, app_key, 2); + cb(" \n", 40, app_key); + cb("\n", 40, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_pathswitchrequestacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_PathSwitchRequestAcknowledgeIEs_t *s1ap_PathSwitchRequestAcknowledgeIEs; + asn_enc_rval_t er; + s1ap_PathSwitchRequestAcknowledgeIEs = &message_p->msg.s1ap_PathSwitchRequestAcknowledgeIEs; + + cb("\n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 43, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_PathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_PathSwitchRequestAcknowledgeIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_UEAggregateMaximumBitrate, &s1ap_PathSwitchRequestAcknowledgeIEs->uEaggregateMaximumBitrate, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBESWITCHEDULLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_E_RABToBeSwitchedULList, &s1ap_PathSwitchRequestAcknowledgeIEs->e_RABToBeSwitchedULList, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_E_RABTOBERELEASEDLIST_PRESENT) + s1ap_xer_print_s1ap_e_rablist(cb, app_key, &s1ap_PathSwitchRequestAcknowledgeIEs->e_RABToBeReleasedList); + xer_encode_local(&asn_DEF_S1ap_SecurityContext, &s1ap_PathSwitchRequestAcknowledgeIEs->securityContext, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_PathSwitchRequestAcknowledgeIEs->criticalityDiagnostics, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestAcknowledgeIEs->presenceMask & S1AP_PATHSWITCHREQUESTACKNOWLEDGEIES_MME_UE_S1AP_ID_2_PRESENT) + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_PathSwitchRequestAcknowledgeIEs->mme_ue_s1ap_id_2, cb, app_key, 2); + cb(" \n", 44, app_key); + cb("\n", 44, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_ue_associatedlogicals1_connectionlistres( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_UE_associatedLogicalS1_ConnectionListResIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListRes) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_UE_associatedLogicalS1_ConnectionListRes->s1ap_UE_associatedLogicalS1_ConnectionItemRes.count; i++) { + er = xer_encode(&asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, s1ap_UE_associatedLogicalS1_ConnectionListRes->s1ap_UE_associatedLogicalS1_ConnectionItemRes.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_s1setupfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_S1SetupFailureIEs_t *s1ap_S1SetupFailureIEs; + asn_enc_rval_t er; + s1ap_S1SetupFailureIEs = &message_p->msg.s1ap_S1SetupFailureIEs; + + cb("\n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_S1SetupFailureIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_S1SetupFailureIEs->presenceMask & S1AP_S1SETUPFAILUREIES_TIMETOWAIT_PRESENT) + xer_encode_local(&asn_DEF_S1ap_TimeToWait, &s1ap_S1SetupFailureIEs->timeToWait, cb, app_key, 2); + /* Optional field */ + if (s1ap_S1SetupFailureIEs->presenceMask & S1AP_S1SETUPFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_S1SetupFailureIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 30, app_key); + cb("\n", 30, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_mmeconfigurationupdatefailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_MMEConfigurationUpdateFailureIEs_t *s1ap_MMEConfigurationUpdateFailureIEs; + asn_enc_rval_t er; + s1ap_MMEConfigurationUpdateFailureIEs = &message_p->msg.s1ap_MMEConfigurationUpdateFailureIEs; + + cb("\n", 44, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 44, app_key); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_MMEConfigurationUpdateFailureIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_MMEConfigurationUpdateFailureIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEFAILUREIES_TIMETOWAIT_PRESENT) + xer_encode_local(&asn_DEF_S1ap_TimeToWait, &s1ap_MMEConfigurationUpdateFailureIEs->timeToWait, cb, app_key, 2); + /* Optional field */ + if (s1ap_MMEConfigurationUpdateFailureIEs->presenceMask & S1AP_MMECONFIGURATIONUPDATEFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_MMEConfigurationUpdateFailureIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 45, app_key); + cb("\n", 45, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_initialcontextsetupresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_InitialContextSetupResponseIEs_t *s1ap_InitialContextSetupResponseIEs; + asn_enc_rval_t er; + s1ap_InitialContextSetupResponseIEs = &message_p->msg.s1ap_InitialContextSetupResponseIEs; + + cb("\n", 42, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 42, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_InitialContextSetupResponseIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_InitialContextSetupResponseIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + s1ap_xer_print_s1ap_e_rabsetuplistctxtsures(cb, app_key, &s1ap_InitialContextSetupResponseIEs->e_RABSetupListCtxtSURes); + /* Optional field */ + if (s1ap_InitialContextSetupResponseIEs->presenceMask & S1AP_INITIALCONTEXTSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTCTXTSURES_PRESENT) + s1ap_xer_print_s1ap_e_rablist(cb, app_key, &s1ap_InitialContextSetupResponseIEs->e_RABFailedToSetupListCtxtSURes); + /* Optional field */ + if (s1ap_InitialContextSetupResponseIEs->presenceMask & S1AP_INITIALCONTEXTSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_InitialContextSetupResponseIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 43, app_key); + cb("\n", 43, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_downlinks1cdma2000tunneling( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_DownlinkS1cdma2000tunnelingIEs_t *s1ap_DownlinkS1cdma2000tunnelingIEs; + asn_enc_rval_t er; + s1ap_DownlinkS1cdma2000tunnelingIEs = &message_p->msg.s1ap_DownlinkS1cdma2000tunnelingIEs; + + cb("\n", 42, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 42, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_DownlinkS1cdma2000tunnelingIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_DownlinkS1cdma2000tunnelingIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_DownlinkS1cdma2000tunnelingIEs->presenceMask & S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_E_RABSUBJECTTODATAFORWARDINGLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_E_RABSubjecttoDataForwardingList, &s1ap_DownlinkS1cdma2000tunnelingIEs->e_RABSubjecttoDataForwardingList, cb, app_key, 2); + /* Optional field */ + if (s1ap_DownlinkS1cdma2000tunnelingIEs->presenceMask & S1AP_DOWNLINKS1CDMA2000TUNNELINGIES_CDMA2000HOSTATUS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_Cdma2000HOStatus, &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000HOStatus, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cdma2000RATType, &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000RATType, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cdma2000PDU, &s1ap_DownlinkS1cdma2000tunnelingIEs->cdma2000PDU, cb, app_key, 2); + cb(" \n", 43, app_key); + cb("\n", 43, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_overloadstop( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_OverloadStopIEs_t *s1ap_OverloadStopIEs; + asn_enc_rval_t er; + s1ap_OverloadStopIEs = &message_p->msg.s1ap_OverloadStopIEs; + + cb("\n", 27, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 27, app_key); + /* Optional field */ + if (s1ap_OverloadStopIEs->presenceMask & S1AP_OVERLOADSTOPIES_GUMMEILIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_GUMMEIList, &s1ap_OverloadStopIEs->gummeiList, cb, app_key, 2); + cb(" \n", 28, app_key); + cb("\n", 28, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabsetuplistbearersures( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABSetupListBearerSUResIEs_t *s1ap_E_RABSetupListBearerSUResIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABSetupListBearerSUResIEs->s1ap_E_RABSetupItemBearerSURes.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABSetupItemBearerSURes, s1ap_E_RABSetupListBearerSUResIEs->s1ap_E_RABSetupItemBearerSURes.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabmodifylistbearermodres( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABModifyListBearerModResIEs_t *s1ap_E_RABModifyListBearerModResIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABModifyListBearerModResIEs->s1ap_E_RABModifyItemBearerModRes.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABModifyItemBearerModRes, s1ap_E_RABModifyListBearerModResIEs->s1ap_E_RABModifyItemBearerModRes.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabtobesetuplistctxtsureq( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABToBeSetupListCtxtSUReqIEs_t *s1ap_E_RABToBeSetupListCtxtSUReqIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABToBeSetupListCtxtSUReqIEs->s1ap_E_RABToBeSetupItemCtxtSUReq.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABToBeSetupItemCtxtSUReq, s1ap_E_RABToBeSetupListCtxtSUReqIEs->s1ap_E_RABToBeSetupItemCtxtSUReq.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_enbconfigurationupdate( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ENBConfigurationUpdateIEs_t *s1ap_ENBConfigurationUpdateIEs; + asn_enc_rval_t er; + s1ap_ENBConfigurationUpdateIEs = &message_p->msg.s1ap_ENBConfigurationUpdateIEs; + + cb("\n", 37, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 37, app_key); + /* Optional field */ + if (s1ap_ENBConfigurationUpdateIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEIES_ENBNAME_PRESENT) + xer_encode_local(&asn_DEF_S1ap_ENBname, &s1ap_ENBConfigurationUpdateIEs->eNBname, cb, app_key, 2); + /* Optional field */ + if (s1ap_ENBConfigurationUpdateIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEIES_SUPPORTEDTAS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SupportedTAs, &s1ap_ENBConfigurationUpdateIEs->supportedTAs, cb, app_key, 2); + /* Optional field */ + if (s1ap_ENBConfigurationUpdateIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEIES_CSG_IDLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSG_IdList, &s1ap_ENBConfigurationUpdateIEs->csG_IdList, cb, app_key, 2); + /* Optional field */ + if (s1ap_ENBConfigurationUpdateIEs->presenceMask & S1AP_ENBCONFIGURATIONUPDATEIES_DEFAULTPAGINGDRX_PRESENT) + xer_encode_local(&asn_DEF_S1ap_PagingDRX, &s1ap_ENBConfigurationUpdateIEs->defaultPagingDRX, cb, app_key, 2); + cb(" \n", 38, app_key); + cb("\n", 38, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_tracefailureindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_TraceFailureIndicationIEs_t *s1ap_TraceFailureIndicationIEs; + asn_enc_rval_t er; + s1ap_TraceFailureIndicationIEs = &message_p->msg.s1ap_TraceFailureIndicationIEs; + + cb("\n", 37, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 37, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_TraceFailureIndicationIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_TraceFailureIndicationIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_E_UTRAN_Trace_ID, &s1ap_TraceFailureIndicationIEs->e_UTRAN_Trace_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_TraceFailureIndicationIEs->cause, cb, app_key, 2); + cb(" \n", 38, app_key); + cb("\n", 38, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabinformationlist( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_E_RABInformationListIEs_t *s1ap_E_RABInformationListIEs) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_E_RABInformationListIEs->s1ap_E_RABInformationList.count; i++) { + er = xer_encode(&asn_DEF_S1ap_E_RABInformationListItem, s1ap_E_RABInformationListIEs->s1ap_E_RABInformationList.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_enbconfigurationtransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ENBConfigurationTransferIEs_t *s1ap_ENBConfigurationTransferIEs; + asn_enc_rval_t er; + s1ap_ENBConfigurationTransferIEs = &message_p->msg.s1ap_ENBConfigurationTransferIEs; + + cb("\n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 39, app_key); + /* Optional field */ + if (s1ap_ENBConfigurationTransferIEs->presenceMask & S1AP_ENBCONFIGURATIONTRANSFERIES_SONCONFIGURATIONTRANSFERECT_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SONConfigurationTransfer, &s1ap_ENBConfigurationTransferIEs->sonConfigurationTransferECT, cb, app_key, 2); + cb(" \n", 40, app_key); + cb("\n", 40, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_handoverfailure( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_HandoverFailureIEs_t *s1ap_HandoverFailureIEs; + asn_enc_rval_t er; + s1ap_HandoverFailureIEs = &message_p->msg.s1ap_HandoverFailureIEs; + + cb("\n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 30, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_HandoverFailureIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_HandoverFailureIEs->cause, cb, app_key, 2); + /* Optional field */ + if (s1ap_HandoverFailureIEs->presenceMask & S1AP_HANDOVERFAILUREIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_HandoverFailureIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 31, app_key); + cb("\n", 31, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_ue_associatedlogicals1_connectionlistresack( + asn_app_consume_bytes_f *cb, + void *app_key, + S1ap_UE_associatedLogicalS1_ConnectionListResAckIEs_t *s1ap_UE_associatedLogicalS1_ConnectionListResAck) { + + int i; + asn_enc_rval_t er; + for (i = 0; i < s1ap_UE_associatedLogicalS1_ConnectionListResAck->s1ap_UE_associatedLogicalS1_ConnectionItemResAck.count; i++) { + er = xer_encode(&asn_DEF_S1ap_UE_associatedLogicalS1_ConnectionItem, s1ap_UE_associatedLogicalS1_ConnectionListResAck->s1ap_UE_associatedLogicalS1_ConnectionItemResAck.array[i], XER_F_BASIC, cb, app_key); + } + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabsetupresponse( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABSetupResponseIEs_t *s1ap_E_RABSetupResponseIEs; + asn_enc_rval_t er; + s1ap_E_RABSetupResponseIEs = &message_p->msg.s1ap_E_RABSetupResponseIEs; + + cb("\n", 33, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 33, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_E_RABSetupResponseIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_E_RABSetupResponseIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_E_RABSetupResponseIEs->presenceMask & S1AP_E_RABSETUPRESPONSEIES_E_RABSETUPLISTBEARERSURES_PRESENT) + s1ap_xer_print_s1ap_e_rabsetuplistbearersures(cb, app_key, &s1ap_E_RABSetupResponseIEs->e_RABSetupListBearerSURes); + /* Optional field */ + if (s1ap_E_RABSetupResponseIEs->presenceMask & S1AP_E_RABSETUPRESPONSEIES_E_RABFAILEDTOSETUPLISTBEARERSURES_PRESENT) + s1ap_xer_print_s1ap_e_rablist(cb, app_key, &s1ap_E_RABSetupResponseIEs->e_RABFailedToSetupListBearerSURes); + /* Optional field */ + if (s1ap_E_RABSetupResponseIEs->presenceMask & S1AP_E_RABSETUPRESPONSEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_E_RABSetupResponseIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 34, app_key); + cb("\n", 34, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextreleasecommand_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UEContextReleaseCommand_IEs_t *s1ap_UEContextReleaseCommand_IEs; + asn_enc_rval_t er; + s1ap_UEContextReleaseCommand_IEs = &message_p->msg.s1ap_UEContextReleaseCommand_IEs; + + cb("\n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 39, app_key); + xer_encode_local(&asn_DEF_S1ap_UE_S1AP_IDs, &s1ap_UEContextReleaseCommand_IEs->uE_S1AP_IDs, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_UEContextReleaseCommand_IEs->cause, cb, app_key, 2); + cb(" \n", 40, app_key); + cb("\n", 40, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_pathswitchrequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_PathSwitchRequestIEs_t *s1ap_PathSwitchRequestIEs; + asn_enc_rval_t er; + s1ap_PathSwitchRequestIEs = &message_p->msg.s1ap_PathSwitchRequestIEs; + + cb("\n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_PathSwitchRequestIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_E_RABToBeSwitchedDLList, &s1ap_PathSwitchRequestIEs->e_RABToBeSwitchedDLList, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_PathSwitchRequestIEs->sourceMME_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_EUTRAN_CGI, &s1ap_PathSwitchRequestIEs->eutran_cgi, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_TAI, &s1ap_PathSwitchRequestIEs->tai, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_UESecurityCapabilities, &s1ap_PathSwitchRequestIEs->ueSecurityCapabilities, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestIEs->presenceMask & S1AP_PATHSWITCHREQUESTIES_CSG_ID_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSG_Id, &s1ap_PathSwitchRequestIEs->csG_Id, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestIEs->presenceMask & S1AP_PATHSWITCHREQUESTIES_CELLACCESSMODE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CellAccessMode, &s1ap_PathSwitchRequestIEs->cellAccessMode, cb, app_key, 2); + /* Optional field */ + if (s1ap_PathSwitchRequestIEs->presenceMask & S1AP_PATHSWITCHREQUESTIES_SOURCEMME_S1AP_GUMMEI_PRESENT) + xer_encode_local(&asn_DEF_S1ap_GUMMEI, &s1ap_PathSwitchRequestIEs->sourceMME_S1ap_GUMMEI, cb, app_key, 2); + cb(" \n", 33, app_key); + cb("\n", 33, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_downlinknastransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_DownlinkNASTransport_IEs_t *s1ap_DownlinkNASTransport_IEs; + asn_enc_rval_t er; + s1ap_DownlinkNASTransport_IEs = &message_p->msg.s1ap_DownlinkNASTransport_IEs; + + cb("\n", 36, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 36, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_DownlinkNASTransport_IEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_DownlinkNASTransport_IEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_NAS_PDU, &s1ap_DownlinkNASTransport_IEs->nas_pdu, cb, app_key, 2); + /* Optional field */ + if (s1ap_DownlinkNASTransport_IEs->presenceMask & S1AP_DOWNLINKNASTRANSPORT_IES_HANDOVERRESTRICTIONLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_HandoverRestrictionList, &s1ap_DownlinkNASTransport_IEs->handoverRestrictionList, cb, app_key, 2); + /* Optional field */ + if (s1ap_DownlinkNASTransport_IEs->presenceMask & S1AP_DOWNLINKNASTRANSPORT_IES_SUBSCRIBERPROFILEIDFORRFP_PRESENT) + xer_encode_local(&asn_DEF_S1ap_SubscriberProfileIDforRFP, &s1ap_DownlinkNASTransport_IEs->subscriberProfileIDforRFP, cb, app_key, 2); + cb(" \n", 37, app_key); + cb("\n", 37, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabreleaseindication( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABReleaseIndicationIEs_t *s1ap_E_RABReleaseIndicationIEs; + asn_enc_rval_t er; + s1ap_E_RABReleaseIndicationIEs = &message_p->msg.s1ap_E_RABReleaseIndicationIEs; + + cb("\n", 37, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 37, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_E_RABReleaseIndicationIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_E_RABReleaseIndicationIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + s1ap_xer_print_s1ap_e_rablist(cb, app_key, &s1ap_E_RABReleaseIndicationIEs->e_RABReleasedList); + cb(" \n", 38, app_key); + cb("\n", 38, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_s1setuprequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_S1SetupRequestIEs_t *s1ap_S1SetupRequestIEs; + asn_enc_rval_t er; + s1ap_S1SetupRequestIEs = &message_p->msg.s1ap_S1SetupRequestIEs; + + cb("\n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 29, app_key); + xer_encode_local(&asn_DEF_S1ap_Global_ENB_ID, &s1ap_S1SetupRequestIEs->global_ENB_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_S1SetupRequestIEs->presenceMask & S1AP_S1SETUPREQUESTIES_ENBNAME_PRESENT) + xer_encode_local(&asn_DEF_S1ap_ENBname, &s1ap_S1SetupRequestIEs->eNBname, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_SupportedTAs, &s1ap_S1SetupRequestIEs->supportedTAs, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_PagingDRX, &s1ap_S1SetupRequestIEs->defaultPagingDRX, cb, app_key, 2); + /* Optional field */ + if (s1ap_S1SetupRequestIEs->presenceMask & S1AP_S1SETUPREQUESTIES_CSG_IDLIST_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CSG_IdList, &s1ap_S1SetupRequestIEs->csG_IdList, cb, app_key, 2); + cb(" \n", 30, app_key); + cb("\n", 30, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_nasnondeliveryindication_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_NASNonDeliveryIndication_IEs_t *s1ap_NASNonDeliveryIndication_IEs; + asn_enc_rval_t er; + s1ap_NASNonDeliveryIndication_IEs = &message_p->msg.s1ap_NASNonDeliveryIndication_IEs; + + cb("\n", 40, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 40, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_NASNonDeliveryIndication_IEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_NASNonDeliveryIndication_IEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_NAS_PDU, &s1ap_NASNonDeliveryIndication_IEs->nas_pdu, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Cause, &s1ap_NASNonDeliveryIndication_IEs->cause, cb, app_key, 2); + cb(" \n", 41, app_key); + cb("\n", 41, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_celltraffictrace( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_CellTrafficTraceIEs_t *s1ap_CellTrafficTraceIEs; + asn_enc_rval_t er; + s1ap_CellTrafficTraceIEs = &message_p->msg.s1ap_CellTrafficTraceIEs; + + cb("\n", 31, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 31, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_CellTrafficTraceIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_CellTrafficTraceIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_E_UTRAN_Trace_ID, &s1ap_CellTrafficTraceIEs->e_UTRAN_Trace_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_EUTRAN_CGI, &s1ap_CellTrafficTraceIEs->eutran_cgi, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_TransportLayerAddress, &s1ap_CellTrafficTraceIEs->traceCollectionEntityIPAddress, cb, app_key, 2); + /* Optional field */ + if (s1ap_CellTrafficTraceIEs->presenceMask & S1AP_CELLTRAFFICTRACEIES_PRIVACYINDICATOR_PRESENT) + xer_encode_local(&asn_DEF_S1ap_PrivacyIndicator, &s1ap_CellTrafficTraceIEs->privacyIndicator, cb, app_key, 2); + cb(" \n", 32, app_key); + cb("\n", 32, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_e_rabsetuprequest( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_E_RABSetupRequestIEs_t *s1ap_E_RABSetupRequestIEs; + asn_enc_rval_t er; + s1ap_E_RABSetupRequestIEs = &message_p->msg.s1ap_E_RABSetupRequestIEs; + + cb("\n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_E_RABSetupRequestIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_E_RABSetupRequestIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_E_RABSetupRequestIEs->presenceMask & S1AP_E_RABSETUPREQUESTIES_UEAGGREGATEMAXIMUMBITRATE_PRESENT) + xer_encode_local(&asn_DEF_S1ap_UEAggregateMaximumBitrate, &s1ap_E_RABSetupRequestIEs->uEaggregateMaximumBitrate, cb, app_key, 2); + s1ap_xer_print_s1ap_e_rabtobesetuplistbearersureq(cb, app_key, &s1ap_E_RABSetupRequestIEs->e_RABToBeSetupListBearerSUReq); + cb(" \n", 33, app_key); + cb("\n", 33, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_enbstatustransfer( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ENBStatusTransferIEs_t *s1ap_ENBStatusTransferIEs; + asn_enc_rval_t er; + s1ap_ENBStatusTransferIEs = &message_p->msg.s1ap_ENBStatusTransferIEs; + + cb("\n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 32, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_ENBStatusTransferIEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_ENBStatusTransferIEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_StatusTransfer_TransparentContainer, &s1ap_ENBStatusTransferIEs->eNB_StatusTransfer_TransparentContainer, cb, app_key, 2); + cb(" \n", 33, app_key); + cb("\n", 33, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_resetacknowledge( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_ResetAcknowledgeIEs_t *s1ap_ResetAcknowledgeIEs; + asn_enc_rval_t er; + s1ap_ResetAcknowledgeIEs = &message_p->msg.s1ap_ResetAcknowledgeIEs; + + cb("\n", 31, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 31, app_key); + /* Optional field */ + if (s1ap_ResetAcknowledgeIEs->presenceMask & S1AP_RESETACKNOWLEDGEIES_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_PRESENT) + s1ap_xer_print_s1ap_ue_associatedlogicals1_connectionlistresack(cb, app_key, &s1ap_ResetAcknowledgeIEs->uE_associatedLogicalS1_ConnectionListResAck); + /* Optional field */ + if (s1ap_ResetAcknowledgeIEs->presenceMask & S1AP_RESETACKNOWLEDGEIES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_ResetAcknowledgeIEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 32, app_key); + cb("\n", 32, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uecontextreleasecomplete_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UEContextReleaseComplete_IEs_t *s1ap_UEContextReleaseComplete_IEs; + asn_enc_rval_t er; + s1ap_UEContextReleaseComplete_IEs = &message_p->msg.s1ap_UEContextReleaseComplete_IEs; + + cb("\n", 40, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 40, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UEContextReleaseComplete_IEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UEContextReleaseComplete_IEs->eNB_UE_S1AP_ID, cb, app_key, 2); + /* Optional field */ + if (s1ap_UEContextReleaseComplete_IEs->presenceMask & S1AP_UECONTEXTRELEASECOMPLETE_IES_CRITICALITYDIAGNOSTICS_PRESENT) + xer_encode_local(&asn_DEF_S1ap_CriticalityDiagnostics, &s1ap_UEContextReleaseComplete_IEs->criticalityDiagnostics, cb, app_key, 2); + cb(" \n", 41, app_key); + cb("\n", 41, app_key); + _ASN_ENCODED_OK(er); +} + +asn_enc_rval_t s1ap_xer_print_s1ap_uplinkueassociatedlppatransport_( + asn_app_consume_bytes_f *cb, + void *app_key, + s1ap_message *message_p) +{ + S1ap_UplinkUEAssociatedLPPaTransport_IEs_t *s1ap_UplinkUEAssociatedLPPaTransport_IEs; + asn_enc_rval_t er; + s1ap_UplinkUEAssociatedLPPaTransport_IEs = &message_p->msg.s1ap_UplinkUEAssociatedLPPaTransport_IEs; + + cb("\n", 47, app_key); + xer_encode_local(&asn_DEF_S1ap_Criticality, &message_p->criticality, cb, app_key, 1); + xer_encode_local(&asn_DEF_S1ap_ProcedureCode, &message_p->procedureCode, cb, app_key, 1); + cb(" \n", 47, app_key); + xer_encode_local(&asn_DEF_S1ap_MME_UE_S1AP_ID, &s1ap_UplinkUEAssociatedLPPaTransport_IEs->mme_ue_s1ap_id, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_ENB_UE_S1AP_ID, &s1ap_UplinkUEAssociatedLPPaTransport_IEs->eNB_UE_S1AP_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_Routing_ID, &s1ap_UplinkUEAssociatedLPPaTransport_IEs->routing_ID, cb, app_key, 2); + xer_encode_local(&asn_DEF_S1ap_LPPa_PDU, &s1ap_UplinkUEAssociatedLPPaTransport_IEs->lpPa_PDU, cb, app_key, 2); + cb(" \n", 48, app_key); + cb("\n", 48, app_key); + _ASN_ENCODED_OK(er); +} + diff --git a/lib/asn/support/S1AP-PDU.asn b/lib/asn/support/S1AP-PDU.asn new file mode 100644 index 0000000000..31cefaea56 --- /dev/null +++ b/lib/asn/support/S1AP-PDU.asn @@ -0,0 +1,5808 @@ +-- ************************************************************** +-- +-- 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 + + +-- ************************************************************** +-- +-- S1ap-IE parameter types from other modules. +-- +-- ************************************************************** + + +IMPORTS + S1ap-Criticality, + S1ap-ProcedureCode +FROM S1AP-CommonDataTypes + + + S1ap-CellTrafficTrace, + S1ap-DeactivateTrace, + S1ap-DownlinkUEAssociatedLPPaTransport, + S1ap-DownlinkNASTransport, + S1ap-DownlinkNonUEAssociatedLPPaTransport, + S1ap-DownlinkS1cdma2000tunneling, + S1ap-ENBDirectInformationTransfer, + S1ap-ENBStatusTransfer, + S1ap-ENBConfigurationUpdate, + S1ap-ENBConfigurationUpdateAcknowledge, + S1ap-ENBConfigurationUpdateFailure, + S1ap-ErrorIndication, + S1ap-HandoverCancel, + S1ap-HandoverCancelAcknowledge, + S1ap-HandoverCommand, + S1ap-HandoverFailure, + S1ap-HandoverNotify, + S1ap-HandoverPreparationFailure, + S1ap-HandoverRequest, + S1ap-HandoverRequestAcknowledge, + S1ap-HandoverRequired, + S1ap-InitialContextSetupFailure, + S1ap-InitialContextSetupRequest, + S1ap-InitialContextSetupResponse, + S1ap-InitialUEMessage, + S1ap-KillRequest, + S1ap-KillResponse, + S1ap-LocationReportingControl, + S1ap-LocationReportingFailureIndication, + S1ap-LocationReport, + S1ap-MMEConfigurationUpdate, + S1ap-MMEConfigurationUpdateAcknowledge, + S1ap-MMEConfigurationUpdateFailure, + S1ap-MMEDirectInformationTransfer, + S1ap-MMEStatusTransfer, + S1ap-NASNonDeliveryIndication, + S1ap-OverloadStart, + S1ap-OverloadStop, + S1ap-Paging, + S1ap-PathSwitchRequest, + S1ap-PathSwitchRequestAcknowledge, + S1ap-PathSwitchRequestFailure, + S1ap-PrivateMessage, + S1ap-Reset, + S1ap-ResetAcknowledge, + S1ap-S1SetupFailure, + S1ap-S1SetupRequest, + S1ap-S1SetupResponse, + S1ap-E-RABModifyRequest, + S1ap-E-RABModifyResponse, + S1ap-E-RABReleaseCommand, + S1ap-E-RABReleaseResponse, + S1ap-E-RABReleaseIndication, + S1ap-E-RABSetupRequest, + S1ap-E-RABSetupResponse, + S1ap-TraceFailureIndication, + S1ap-TraceStart, + S1ap-UECapabilityInfoIndication, + S1ap-UEContextModificationFailure, + S1ap-UEContextModificationRequest, + S1ap-UEContextModificationResponse, + S1ap-UEContextReleaseCommand, + S1ap-UEContextReleaseComplete, + S1ap-UEContextReleaseRequest, + S1ap-UplinkUEAssociatedLPPaTransport, + S1ap-UplinkNASTransport, + S1ap-UplinkNonUEAssociatedLPPaTransport, + S1ap-UplinkS1cdma2000tunneling, + S1ap-WriteReplaceWarningRequest, + S1ap-WriteReplaceWarningResponse, + S1ap-ENBConfigurationTransfer, + S1ap-MMEConfigurationTransfer + + + + +FROM S1AP-PDU-Contents + + id-CellTrafficTrace, + id-DeactivateTrace, + id-downlinkUEAssociatedLPPaTransport, + id-downlinkNASTransport, + id-downlinkNonUEAssociatedLPPaTransport, + id-DownlinkS1cdma2000tunneling, + 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-RABRelease, + id-E-RABReleaseIndication, + id-E-RABSetup, + id-TraceFailureIndication, + id-TraceStart, + id-UECapabilityInfoIndication, + id-UEContextModification, + id-UEContextRelease, + id-UEContextReleaseRequest, + id-uplinkUEAssociatedLPPaTransport, + id-uplinkNASTransport, + id-uplinkNonUEAssociatedLPPaTransport, + id-UplinkS1cdma2000tunneling, + id-WriteReplaceWarning, + id-eNBConfigurationTransfer, + id-MMEConfigurationTransfer +FROM S1AP-Constants; + + + + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + + +S1AP-ELEMENTARY-PROCEDURE ::= CLASS { + &S1ap-InitiatingMessage , + &S1ap-SuccessfulOutcome OPTIONAL, + &S1ap-UnsuccessfulOutcome OPTIONAL, + &procedureCode S1ap-ProcedureCode UNIQUE, + &criticality S1ap-Criticality DEFAULT ignore +} +WITH SYNTAX { + INITIATING MESSAGE &S1ap-InitiatingMessage + [SUCCESSFUL OUTCOME &S1ap-SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &S1ap-UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} + + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + + +S1AP-PDU ::= CHOICE { + initiatingMessage S1ap-InitiatingMessage, + successfulOutcome S1ap-SuccessfulOutcome, + unsuccessfulOutcome S1ap-UnsuccessfulOutcome, + ... +} + + +S1ap-InitiatingMessage ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&S1ap-InitiatingMessage ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + + +S1ap-SuccessfulOutcome ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&S1ap-SuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + + +S1ap-UnsuccessfulOutcome ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&S1ap-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 , + ... +} + + +S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= { + handoverNotification | + e-RABReleaseIndication | + paging | + downlinkNASTransport | + initialUEMessage | + uplinkNASTransport | + errorIndication | + nASNonDeliveryIndication | + uEContextReleaseRequest | + downlinkS1cdma2000tunneling | + uplinkS1cdma2000tunneling | + uECapabilityInfoIndication | + eNBStatusTransfer | + mMEStatusTransfer | + deactivateTrace | + traceStart | + traceFailureIndication | + cellTrafficTrace | + locationReportingControl | + locationReportingFailureIndication | + locationReport | + overloadStart | + overloadStop | + eNBDirectInformationTransfer | + mMEDirectInformationTransfer | + eNBConfigurationTransfer | + mMEConfigurationTransfer | + privateMessage , + ..., + downlinkUEAssociatedLPPaTransport | + uplinkUEAssociatedLPPaTransport | + downlinkNonUEAssociatedLPPaTransport | + uplinkNonUEAssociatedLPPaTransport +} + + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + + +handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-HandoverRequired + SUCCESSFUL OUTCOME S1ap-HandoverCommand + UNSUCCESSFUL OUTCOME S1ap-HandoverPreparationFailure + PROCEDURE CODE id-HandoverPreparation + CRITICALITY reject +} + + +handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-HandoverRequest + SUCCESSFUL OUTCOME S1ap-HandoverRequestAcknowledge + UNSUCCESSFUL OUTCOME S1ap-HandoverFailure + PROCEDURE CODE id-HandoverResourceAllocation + CRITICALITY reject +} + + +handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-HandoverNotify + PROCEDURE CODE id-HandoverNotification + CRITICALITY ignore +} + + +pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-PathSwitchRequest + SUCCESSFUL OUTCOME S1ap-PathSwitchRequestAcknowledge + UNSUCCESSFUL OUTCOME S1ap-PathSwitchRequestFailure + PROCEDURE CODE id-PathSwitchRequest + CRITICALITY reject +} + + +e-RABSetup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-E-RABSetupRequest + SUCCESSFUL OUTCOME S1ap-E-RABSetupResponse + PROCEDURE CODE id-E-RABSetup + CRITICALITY reject +} + + +e-RABModify S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-E-RABModifyRequest + SUCCESSFUL OUTCOME S1ap-E-RABModifyResponse + PROCEDURE CODE id-E-RABModify + CRITICALITY reject +} + + +e-RABRelease S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-E-RABReleaseCommand + SUCCESSFUL OUTCOME S1ap-E-RABReleaseResponse + PROCEDURE CODE id-E-RABRelease + CRITICALITY reject +} + + +e-RABReleaseIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-E-RABReleaseIndication + PROCEDURE CODE id-E-RABReleaseIndication + CRITICALITY ignore +} + + +initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-InitialContextSetupRequest + SUCCESSFUL OUTCOME S1ap-InitialContextSetupResponse + UNSUCCESSFUL OUTCOME S1ap-InitialContextSetupFailure + PROCEDURE CODE id-InitialContextSetup + CRITICALITY reject +} + + +uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-UEContextReleaseRequest + PROCEDURE CODE id-UEContextReleaseRequest + CRITICALITY ignore +} + + +paging S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-Paging + PROCEDURE CODE id-Paging + CRITICALITY ignore +} + + +downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-DownlinkNASTransport + PROCEDURE CODE id-downlinkNASTransport + CRITICALITY ignore +} + + +initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-InitialUEMessage + PROCEDURE CODE id-initialUEMessage + CRITICALITY ignore +} + + +uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-UplinkNASTransport + PROCEDURE CODE id-uplinkNASTransport + CRITICALITY ignore +} +nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-NASNonDeliveryIndication + PROCEDURE CODE id-NASNonDeliveryIndication + CRITICALITY ignore +} + + +handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-HandoverCancel + SUCCESSFUL OUTCOME S1ap-HandoverCancelAcknowledge + PROCEDURE CODE id-HandoverCancel + CRITICALITY reject +} + + +reset S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-Reset + SUCCESSFUL OUTCOME S1ap-ResetAcknowledge + PROCEDURE CODE id-Reset + CRITICALITY reject +} + + +errorIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-ErrorIndication + PROCEDURE CODE id-ErrorIndication + CRITICALITY ignore +} + + +s1Setup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-S1SetupRequest + SUCCESSFUL OUTCOME S1ap-S1SetupResponse + UNSUCCESSFUL OUTCOME S1ap-S1SetupFailure + PROCEDURE CODE id-S1Setup + CRITICALITY reject +} + + +eNBConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-ENBConfigurationUpdate + SUCCESSFUL OUTCOME S1ap-ENBConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME S1ap-ENBConfigurationUpdateFailure + PROCEDURE CODE id-ENBConfigurationUpdate + CRITICALITY reject +} + + +mMEConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-MMEConfigurationUpdate + SUCCESSFUL OUTCOME S1ap-MMEConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME S1ap-MMEConfigurationUpdateFailure + PROCEDURE CODE id-MMEConfigurationUpdate + CRITICALITY reject +} + + +downlinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-DownlinkS1cdma2000tunneling + PROCEDURE CODE id-DownlinkS1cdma2000tunneling + CRITICALITY ignore +} + + +uplinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-UplinkS1cdma2000tunneling + PROCEDURE CODE id-UplinkS1cdma2000tunneling + CRITICALITY ignore +} + + +uEContextModification S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-UEContextModificationRequest + SUCCESSFUL OUTCOME S1ap-UEContextModificationResponse + UNSUCCESSFUL OUTCOME S1ap-UEContextModificationFailure + + + PROCEDURE CODE id-UEContextModification + CRITICALITY reject +} + + +uECapabilityInfoIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-UECapabilityInfoIndication + PROCEDURE CODE id-UECapabilityInfoIndication + CRITICALITY ignore +} + + +uEContextRelease S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-UEContextReleaseCommand + SUCCESSFUL OUTCOME S1ap-UEContextReleaseComplete + PROCEDURE CODE id-UEContextRelease + CRITICALITY reject +} + + +eNBStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-ENBStatusTransfer + PROCEDURE CODE id-eNBStatusTransfer + CRITICALITY ignore +} + + +mMEStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-MMEStatusTransfer + PROCEDURE CODE id-MMEStatusTransfer + CRITICALITY ignore +} + + +deactivateTrace S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-DeactivateTrace + PROCEDURE CODE id-DeactivateTrace + CRITICALITY ignore +} + + +traceStart S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-TraceStart + PROCEDURE CODE id-TraceStart + CRITICALITY ignore +} + + +traceFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-TraceFailureIndication + PROCEDURE CODE id-TraceFailureIndication + CRITICALITY ignore +} +cellTrafficTrace S1AP-ELEMENTARY-PROCEDURE ::={ + INITIATING MESSAGE S1ap-CellTrafficTrace + PROCEDURE CODE id-CellTrafficTrace + CRITICALITY ignore +} + + +locationReportingControl S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-LocationReportingControl + PROCEDURE CODE id-LocationReportingControl + CRITICALITY ignore +} + + +locationReportingFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-LocationReportingFailureIndication + PROCEDURE CODE id-LocationReportingFailureIndication + CRITICALITY ignore +} + + +locationReport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-LocationReport + PROCEDURE CODE id-LocationReport + CRITICALITY ignore +} + + +overloadStart S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-OverloadStart + PROCEDURE CODE id-OverloadStart + CRITICALITY ignore +} + + +overloadStop S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-OverloadStop + PROCEDURE CODE id-OverloadStop + CRITICALITY reject +} + + +writeReplaceWarning S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-WriteReplaceWarningRequest + SUCCESSFUL OUTCOME S1ap-WriteReplaceWarningResponse + PROCEDURE CODE id-WriteReplaceWarning + CRITICALITY reject +} + + +eNBDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-ENBDirectInformationTransfer + PROCEDURE CODE id-eNBDirectInformationTransfer + CRITICALITY ignore +} + + +mMEDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-MMEDirectInformationTransfer + PROCEDURE CODE id-MMEDirectInformationTransfer + CRITICALITY ignore +} + + +eNBConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-ENBConfigurationTransfer + PROCEDURE CODE id-eNBConfigurationTransfer + CRITICALITY ignore +} + + +mMEConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-MMEConfigurationTransfer + PROCEDURE CODE id-MMEConfigurationTransfer + CRITICALITY ignore +} + + + + +privateMessage S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-PrivateMessage + PROCEDURE CODE id-PrivateMessage + CRITICALITY ignore +} + + +kill S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-KillRequest + SUCCESSFUL OUTCOME S1ap-KillResponse + PROCEDURE CODE id-Kill + CRITICALITY reject +} + + +downlinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-DownlinkUEAssociatedLPPaTransport + PROCEDURE CODE id-downlinkUEAssociatedLPPaTransport + CRITICALITY ignore +} + + +uplinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-UplinkUEAssociatedLPPaTransport + PROCEDURE CODE id-uplinkUEAssociatedLPPaTransport + CRITICALITY ignore +} +downlinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-DownlinkNonUEAssociatedLPPaTransport + PROCEDURE CODE id-downlinkNonUEAssociatedLPPaTransport + CRITICALITY ignore +} + + +uplinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1ap-UplinkNonUEAssociatedLPPaTransport + PROCEDURE CODE id-uplinkNonUEAssociatedLPPaTransport + CRITICALITY ignore +} + + +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 + + +-- ************************************************************** +-- +-- S1ap-IE parameter types from other modules. +-- +-- ************************************************************** + + +IMPORTS + S1ap-Criticality, + S1ap-Presence, + S1ap-ProcedureCode +FROM S1AP-CommonDataTypes + + S1ap-UEAggregateMaximumBitrate, + S1ap-Cause, + S1ap-CellAccessMode, + S1ap-Cdma2000HORequiredIndication, + S1ap-Cdma2000HOStatus, + S1ap-Cdma2000OneXSRVCCInfo, + S1ap-Cdma2000OneXRAND, + S1ap-Cdma2000PDU, + S1ap-Cdma2000RATType, + S1ap-Cdma2000SectorID, + S1ap-EUTRANRoundTripDelayEstimationInfo, + S1ap-CNDomain, + S1ap-ConcurrentWarningMessageIndicator, + S1ap-CriticalityDiagnostics, + S1ap-CSFallbackIndicator, + S1ap-CSG-Id, + S1ap-CSG-IdList, + S1ap-CSGMembershipStatus, + S1ap-Data-Forwarding-Not-Possible, + S1ap-Direct-Forwarding-Path-Availability, + S1ap-Global-ENB-ID, + S1ap-EUTRAN-CGI, + S1ap-ENBname, + S1ap-ENB-StatusTransfer-TransparentContainer, + S1ap-ENB-UE-S1AP-ID, + S1ap-ExtendedRepetitionPeriod, + S1ap-GTP-TEID, + S1ap-GUMMEI, + S1ap-HandoverRestrictionList, + S1ap-HandoverType, + S1ap-LAI, + S1ap-LPPa-PDU, + S1ap-ManagementBasedMDTAllowed, + S1ap-MMEname, + S1ap-MMERelaySupportIndicator, + S1ap-MME-UE-S1AP-ID, + S1ap-MSClassmark2, + S1ap-MSClassmark3, + S1ap-NAS-PDU, + S1ap-NASSecurityParametersfromE-UTRAN, + S1ap-NASSecurityParameterstoE-UTRAN, + S1ap-OverloadResponse, + S1ap-PagingDRX, + S1ap-PagingPriority, + S1ap-PLMNidentity, + S1ap-RIMTransfer, + S1ap-RelativeMMECapacity, + S1ap-RequestType, + S1ap-E-RAB-ID, + S1ap-E-RABLevelQoSParameters, + S1ap-E-RABList, + S1ap-RelayNode-Indicator, + S1ap-Routing-ID, + S1ap-SecurityKey, + S1ap-SecurityContext, + S1ap-ServedGUMMEIs, + S1ap-SONConfigurationTransfer, + S1ap-Source-ToTarget-TransparentContainer, + S1ap-SourceBSS-ToTargetBSS-TransparentContainer, + S1ap-SourceeNB-ToTargeteNB-TransparentContainer, + S1ap-SourceRNC-ToTargetRNC-TransparentContainer, + S1ap-SubscriberProfileIDforRFP, + S1ap-SRVCCOperationPossible, + S1ap-SRVCCHOIndication, + S1ap-SupportedTAs, + S1ap-TAI, + S1ap-Target-ToSource-TransparentContainer, + S1ap-TargetBSS-ToSourceBSS-TransparentContainer, + S1ap-TargeteNB-ToSourceeNB-TransparentContainer, + S1ap-TargetID, + S1ap-TargetRNC-ToSourceRNC-TransparentContainer, + S1ap-TimeToWait, + S1ap-TraceActivation, + S1ap-TrafficLoadReductionIndication, + S1ap-E-UTRAN-Trace-ID, + S1ap-TransportLayerAddress, + S1ap-UEIdentityIndexValue, + S1ap-UEPagingID, + S1ap-UERadioCapability, + S1ap-UE-S1AP-IDs, + S1ap-UE-associatedLogicalS1-ConnectionItem, + S1ap-UESecurityCapabilities, + S1ap-S-TMSI, + S1ap-MessageIdentifier, + S1ap-SerialNumber, + S1ap-WarningAreaList, + S1ap-RepetitionPeriod, + S1ap-NumberofBroadcastRequest, + S1ap-WarningType, + S1ap-WarningSecurityInfo, + S1ap-DataCodingScheme, + S1ap-WarningMessageContents, + S1ap-BroadcastCompletedAreaList, + S1ap-RRC-Establishment-Cause, + S1ap-BroadcastCancelledAreaList, + S1ap-PS-ServiceNotAvailable, + S1ap-GUMMEIList, + S1ap-Correlation-ID, + S1ap-GWContextReleaseIndication, + S1ap-PrivacyIndicator + + + + + + +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-uEaggregateMaximumBitrate, + id-Cause, + id-CellAccessMode, + 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-HandoverRestrictionList, + id-HandoverType, + id-InitialContextSetup, + id-Inter-SystemInformationTransferTypeEDT, + id-Inter-SystemInformationTransferTypeMDT, + id-LPPa-PDU, + id-NAS-DownlinkCount, + id-ManagementBasedMDTAllowed, + 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-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-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-SecurityKey, + id-SecurityContext, + id-ServedGUMMEIs, + id-SONConfigurationTransferECT, + id-SONConfigurationTransferMCT, + id-Source-ToTarget-TransparentContainer, + id-Source-ToTarget-TransparentContainer-Secondary, + id-SourceMME-UE-S1AP-ID, + 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-UTRANtoLTEHOInformationRes, + id-UE-associatedLogicalS1-ConnectionListResAck, + id-UE-associatedLogicalS1-ConnectionItem, + id-UESecurityCapabilities, + id-UE-S1AP-IDs, + 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, + s1ap-maxnoofTAIs, + s1ap-maxNrOfErrors, + s1ap-maxNrOfE-RABs, + s1ap-maxNrOfIndividualS1ConnectionsToReset, + s1ap-maxnoofEmergencyAreaID, + s1ap-maxnoofCellID, + s1ap-maxnoofTAIforWarning, + s1ap-maxnoofCellinTAI, + s1ap-maxnoofCellinEAI, + id-ExtendedRepetitionPeriod, + id-PS-ServiceNotAvailable, + id-RegisteredLAI, + id-GUMMEIList, + id-SourceMME-S1ap-GUMMEI, + id-MME-UE-S1AP-ID-2, + id-GW-S1ap-TransportLayerAddress, + id-RelayNode-Indicator, + id-Correlation-ID, + id-MMERelaySupportIndicator, + id-GWContextReleaseIndication, + id-PrivacyIndicator, + s1ap-maxProtocolIEs + +FROM S1AP-Constants + + S1ap-IE + +FROM S1AP-PDU; + + +-- ************************************************************** +-- +-- Common Container Lists +-- +-- ************************************************************** + + +E-RAB-S1ap-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, s1ap-maxNrOfE-RABs, {IEsSetParam} } +E-RAB-S1ap-IE-ContainerPairList { S1AP-PROTOCOL-IES-PAIR : IEsSetParam } ::= ProtocolIE-ContainerPairList { 1, s1ap-maxNrOfE-RABs, {IEsSetParam} } +ProtocolError-S1ap-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, s1ap-maxNrOfE-RABs, {IEsSetParam} } + + +-- ************************************************************** +-- +-- HANDOVER PREPARATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Handover Required +-- +-- ************************************************************** + + +S1ap-HandoverRequired ::= SEQUENCE { + s1ap-HandoverRequired-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverRequiredIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-HandoverType CRITICALITY reject TYPE S1ap-HandoverType PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-TargetID CRITICALITY reject TYPE S1ap-TargetID PRESENCE mandatory }| + { ID id-Direct-Forwarding-Path-Availability CRITICALITY ignore TYPE S1ap-Direct-Forwarding-Path-Availability PRESENCE optional }| + { ID id-SRVCCHOIndication CRITICALITY reject TYPE S1ap-SRVCCHOIndication PRESENCE optional }| + { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE S1ap-Source-ToTarget-TransparentContainer PRESENCE mandatory }| + { ID id-Source-ToTarget-TransparentContainer-Secondary CRITICALITY reject TYPE S1ap-Source-ToTarget-TransparentContainer PRESENCE optional }| + { ID id-MSClassmark2 CRITICALITY reject TYPE S1ap-MSClassmark2 PRESENCE conditional }| + { ID id-MSClassmark3 CRITICALITY ignore TYPE S1ap-MSClassmark3 PRESENCE conditional }| + { ID id-CSG-Id CRITICALITY reject TYPE S1ap-CSG-Id PRESENCE optional }| + { ID id-CellAccessMode CRITICALITY reject TYPE S1ap-CellAccessMode PRESENCE optional }| + { ID id-PS-ServiceNotAvailable CRITICALITY ignore TYPE S1ap-PS-ServiceNotAvailable PRESENCE optional }, + ... +} + + + + +-- ************************************************************** +-- +-- Handover Command +-- +-- ************************************************************** + + +S1ap-HandoverCommand ::= SEQUENCE { + s1ap-HandoverCommand-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverCommandIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-HandoverType CRITICALITY reject TYPE S1ap-HandoverType PRESENCE mandatory } | + { ID id-NASSecurityParametersfromE-UTRAN CRITICALITY reject TYPE S1ap-NASSecurityParametersfromE-UTRAN PRESENCE conditional + -- This S1ap-IE shall be present if S1ap-HandoverType S1ap-IE is set to value "LTEtoUTRAN" or "LTEtoGERAN" -- }| + { ID id-E-RABSubjecttoDataForwardingList CRITICALITY ignore TYPE S1ap-E-RABSubjecttoDataForwardingList PRESENCE optional } | + { ID id-E-RABtoReleaseListHOCmd CRITICALITY ignore TYPE S1ap-E-RABList PRESENCE optional } | + { ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE S1ap-Target-ToSource-TransparentContainer PRESENCE mandatory }| + { ID id-Target-ToSource-TransparentContainer-Secondary CRITICALITY reject TYPE S1ap-Target-ToSource-TransparentContainer PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +S1ap-E-RABSubjecttoDataForwardingList ::= E-RAB-S1ap-IE-ContainerList { {S1ap-E-RABDataForwardingItemIEs} } + + +S1ap-E-RABDataForwardingItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABDataForwardingItem CRITICALITY ignore TYPE S1ap-E-RABDataForwardingItem PRESENCE mandatory }, + ... +} + + +S1ap-E-RABDataForwardingItem ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + dL-transportLayerAddress S1ap-TransportLayerAddress OPTIONAL, + dL-gTP-TEID S1ap-GTP-TEID OPTIONAL, + uL-S1ap-TransportLayerAddress S1ap-TransportLayerAddress OPTIONAL, + uL-S1ap-GTP-TEID S1ap-GTP-TEID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { S1ap-E-RABDataForwardingItem-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABDataForwardingItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + + + +-- ************************************************************** +-- +-- Handover Preparation Failure +-- +-- ************************************************************** + + +S1ap-HandoverPreparationFailure ::= SEQUENCE { + s1ap-HandoverPreparationFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverPreparationFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- HANDOVER RESOURCE ALLOCATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Handover Request +-- +-- ************************************************************** + + +S1ap-HandoverRequest ::= SEQUENCE { + s1ap-HandoverRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-HandoverType CRITICALITY reject TYPE S1ap-HandoverType PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE S1ap-UEAggregateMaximumBitrate PRESENCE mandatory}| + { ID id-E-RABToBeSetupListHOReq CRITICALITY reject TYPE S1ap-E-RABToBeSetupListHOReq PRESENCE mandatory}| + { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE S1ap-Source-ToTarget-TransparentContainer PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE S1ap-UESecurityCapabilities PRESENCE mandatory}| + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE S1ap-HandoverRestrictionList PRESENCE optional}| + { ID id-TraceActivation CRITICALITY ignore TYPE S1ap-TraceActivation PRESENCE optional}| + { ID id-RequestType CRITICALITY ignore TYPE S1ap-RequestType PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE S1ap-SRVCCOperationPossible PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE S1ap-SecurityContext PRESENCE mandatory}| + { ID id-NASSecurityParameterstoE-UTRAN CRITICALITY reject TYPE S1ap-NASSecurityParameterstoE-UTRAN PRESENCE conditional + -- This S1ap-IE shall be present if the Handover Type S1ap-IE is set to the value "UTRANtoLTE" or "GERANtoLTE" --}| + { ID id-CSG-Id CRITICALITY reject TYPE S1ap-CSG-Id PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE S1ap-CSGMembershipStatus PRESENCE optional}| + { ID id-GUMMEI-ID CRITICALITY ignore TYPE S1ap-GUMMEI PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE optional}| + { ID id-ManagementBasedMDTAllowed CRITICALITY ignore TYPE S1ap-ManagementBasedMDTAllowed PRESENCE optional}, + ... +} + + +S1ap-E-RABToBeSetupListHOReq ::= E-RAB-S1ap-IE-ContainerList { {S1ap-E-RABToBeSetupItemHOReqIEs} } + + +S1ap-E-RABToBeSetupItemHOReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemHOReq CRITICALITY reject TYPE S1ap-E-RABToBeSetupItemHOReq PRESENCE mandatory }, + ... +} + + +S1ap-E-RABToBeSetupItemHOReq ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + transportLayerAddress S1ap-TransportLayerAddress, + gTP-TEID S1ap-GTP-TEID, + e-RABlevelQosParameters S1ap-E-RABLevelQoSParameters, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABToBeSetupItemHOReq-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABToBeSetupItemHOReq-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + {ID id-Data-Forwarding-Not-Possible CRITICALITY ignore EXTENSION S1ap-Data-Forwarding-Not-Possible PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- Handover Request Acknowledge +-- +-- ************************************************************** + + +S1ap-HandoverRequestAcknowledge ::= SEQUENCE { + s1ap-HandoverRequestAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-E-RABAdmittedList CRITICALITY ignore TYPE S1ap-E-RABAdmittedList PRESENCE mandatory } | + { ID id-E-RABFailedToSetupListHOReqAck CRITICALITY ignore TYPE S1ap-E-RABFailedtoSetupListHOReqAck PRESENCE optional } | + { ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE S1ap-Target-ToSource-TransparentContainer PRESENCE mandatory }| + { ID id-CSG-Id CRITICALITY ignore TYPE S1ap-CSG-Id PRESENCE optional } | + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +S1ap-E-RABAdmittedList ::= E-RAB-S1ap-IE-ContainerList { {S1ap-E-RABAdmittedItemIEs} } + + +S1ap-E-RABAdmittedItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABAdmittedItem CRITICALITY ignore TYPE S1ap-E-RABAdmittedItem PRESENCE mandatory }, + ... +} + + +S1ap-E-RABAdmittedItem ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + transportLayerAddress S1ap-TransportLayerAddress, + gTP-TEID S1ap-GTP-TEID, + dL-transportLayerAddress S1ap-TransportLayerAddress OPTIONAL, + dL-gTP-TEID S1ap-GTP-TEID OPTIONAL, + uL-S1ap-TransportLayerAddress S1ap-TransportLayerAddress OPTIONAL, + uL-S1ap-GTP-TEID S1ap-GTP-TEID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABAdmittedItem-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABAdmittedItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-E-RABFailedtoSetupListHOReqAck ::= E-RAB-S1ap-IE-ContainerList { {S1ap-E-RABFailedtoSetupItemHOReqAckIEs} } + + +S1ap-E-RABFailedtoSetupItemHOReqAckIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABFailedtoSetupItemHOReqAck CRITICALITY ignore TYPE S1ap-E-RABFailedToSetupItemHOReqAck PRESENCE mandatory }, + ... +} + + +S1ap-E-RABFailedToSetupItemHOReqAck ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + cause S1ap-Cause, + iE-Extensions ProtocolExtensionContainer { { S1ap-E-RABFailedToSetupItemHOReqAckExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABFailedToSetupItemHOReqAckExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +-- ************************************************************** +-- +-- Handover Failure +-- +-- ************************************************************** + + +S1ap-HandoverFailure ::= SEQUENCE { + s1ap-HandoverFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- HANDOVER NOTIFICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Handover Notify +-- +-- ************************************************************** + + +S1ap-HandoverNotify ::= SEQUENCE { + s1ap-HandoverNotify-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverNotifyIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE S1ap-EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE S1ap-TAI PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- PATH SWITCH REQUEST ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Path Switch Request +-- +-- ************************************************************** + + +S1ap-PathSwitchRequest ::= SEQUENCE { + s1ap-PathSwitchRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-PathSwitchRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABToBeSwitchedDLList CRITICALITY reject TYPE S1ap-E-RABToBeSwitchedDLList PRESENCE mandatory}| + { ID id-SourceMME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE S1ap-EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE S1ap-TAI PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY ignore TYPE S1ap-UESecurityCapabilities PRESENCE mandatory}| + { ID id-CSG-Id CRITICALITY ignore TYPE S1ap-CSG-Id PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY ignore TYPE S1ap-CellAccessMode PRESENCE optional}| + { ID id-SourceMME-S1ap-GUMMEI CRITICALITY ignore TYPE S1ap-GUMMEI PRESENCE optional}, + ... +} + + +S1ap-E-RABToBeSwitchedDLList ::= E-RAB-S1ap-IE-ContainerList { {S1ap-E-RABToBeSwitchedDLItemIEs} } + + +S1ap-E-RABToBeSwitchedDLItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSwitchedDLItem CRITICALITY reject TYPE S1ap-E-RABToBeSwitchedDLItem PRESENCE mandatory }, + ... +} + + +S1ap-E-RABToBeSwitchedDLItem ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + transportLayerAddress S1ap-TransportLayerAddress, + gTP-TEID S1ap-GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { S1ap-E-RABToBeSwitchedDLItem-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABToBeSwitchedDLItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Path Switch Request Acknowledge +-- +-- ************************************************************** + + +S1ap-PathSwitchRequestAcknowledge ::= SEQUENCE { + s1ap-PathSwitchRequestAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-PathSwitchRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY ignore TYPE S1ap-UEAggregateMaximumBitrate PRESENCE optional}| + { ID id-E-RABToBeSwitchedULList CRITICALITY ignore TYPE S1ap-E-RABToBeSwitchedULList PRESENCE optional}| + { ID id-E-RABToBeReleasedList CRITICALITY ignore TYPE S1ap-E-RABList PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE S1ap-SecurityContext PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE optional}, + ... +} + + +S1ap-E-RABToBeSwitchedULList ::= E-RAB-S1ap-IE-ContainerList { {S1ap-E-RABToBeSwitchedULItemIEs} } + + +S1ap-E-RABToBeSwitchedULItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSwitchedULItem CRITICALITY ignore TYPE S1ap-E-RABToBeSwitchedULItem PRESENCE mandatory }, + ... +} + + +S1ap-E-RABToBeSwitchedULItem ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + transportLayerAddress S1ap-TransportLayerAddress, + gTP-TEID S1ap-GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { S1ap-E-RABToBeSwitchedULItem-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABToBeSwitchedULItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +-- ************************************************************** +-- +-- Path Switch Request Failure +-- +-- ************************************************************** + + +S1ap-PathSwitchRequestFailure ::= SEQUENCE { + s1ap-PathSwitchRequestFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-PathSwitchRequestFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- HANDOVER CANCEL ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Handover Cancel +-- +-- ************************************************************** + + +S1ap-HandoverCancel ::= SEQUENCE { + s1ap-HandoverCancel-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverCancelIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- Handover Cancel Request Acknowledge +-- +-- ************************************************************** + + +S1ap-HandoverCancelAcknowledge ::= SEQUENCE { + s1ap-HandoverCancelAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-HandoverCancelAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- E-RAB SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- E-RAB Setup Request +-- +-- ************************************************************** + + +S1ap-E-RABSetupRequest ::= SEQUENCE { + s1ap-E-RABSetupRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-E-RABSetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE S1ap-UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeSetupListBearerSUReq CRITICALITY reject TYPE S1ap-E-RABToBeSetupListBearerSUReq PRESENCE mandatory }, + ... +} + + +S1ap-E-RABToBeSetupListBearerSUReq ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {S1ap-E-RABToBeSetupItemBearerSUReqIEs} } + + +S1ap-E-RABToBeSetupItemBearerSUReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemBearerSUReq CRITICALITY reject TYPE S1ap-E-RABToBeSetupItemBearerSUReq PRESENCE mandatory }, + ... +} + + +S1ap-E-RABToBeSetupItemBearerSUReq ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + e-RABlevelQoSParameters S1ap-E-RABLevelQoSParameters, + transportLayerAddress S1ap-TransportLayerAddress, + gTP-TEID S1ap-GTP-TEID, + nAS-PDU S1ap-NAS-PDU, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABToBeSetupItemBearerSUReqExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-E-RABToBeSetupItemBearerSUReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-Correlation-ID CRITICALITY ignore EXTENSION S1ap-Correlation-ID PRESENCE optional}, + ... +} + + + + +-- ************************************************************** +-- +-- E-RAB Setup Response +-- +-- ************************************************************** + + +S1ap-E-RABSetupResponse ::= SEQUENCE { + s1ap-E-RABSetupResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-E-RABSetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABSetupListBearerSURes CRITICALITY ignore TYPE S1ap-E-RABSetupListBearerSURes PRESENCE optional }| + { ID id-E-RABFailedToSetupListBearerSURes CRITICALITY ignore TYPE S1ap-E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + + + +S1ap-E-RABSetupListBearerSURes ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {S1ap-E-RABSetupItemBearerSUResIEs} } + + +S1ap-E-RABSetupItemBearerSUResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABSetupItemBearerSURes CRITICALITY ignore TYPE S1ap-E-RABSetupItemBearerSURes PRESENCE mandatory }, + ... +} + + +S1ap-E-RABSetupItemBearerSURes ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + transportLayerAddress S1ap-TransportLayerAddress, + gTP-TEID S1ap-GTP-TEID, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABSetupItemBearerSUResExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-E-RABSetupItemBearerSUResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + + + +-- ************************************************************** +-- +-- E-RAB MODIFY ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- E-RAB Modify Request +-- +-- ************************************************************** + + +S1ap-E-RABModifyRequest ::= SEQUENCE { + s1ap-E-RABModifyRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-E-RABModifyRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE S1ap-UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeModifiedListBearerModReq CRITICALITY reject TYPE S1ap-E-RABToBeModifiedListBearerModReq PRESENCE mandatory }, + ... +} + + +S1ap-E-RABToBeModifiedListBearerModReq ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {S1ap-E-RABToBeModifiedItemBearerModReqIEs} } + + +S1ap-E-RABToBeModifiedItemBearerModReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeModifiedItemBearerModReq CRITICALITY reject TYPE S1ap-E-RABToBeModifiedItemBearerModReq PRESENCE mandatory }, + ... +} + + +S1ap-E-RABToBeModifiedItemBearerModReq ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + e-RABLevelQoSParameters S1ap-E-RABLevelQoSParameters, + nAS-PDU S1ap-NAS-PDU, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABToBeModifyItemBearerModReqExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-E-RABToBeModifyItemBearerModReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + + + +-- ************************************************************** +-- +-- E-RAB Modify Response +-- +-- ************************************************************** + + +S1ap-E-RABModifyResponse ::= SEQUENCE { + s1ap-E-RABModifyResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-E-RABModifyResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABModifyListBearerModRes CRITICALITY ignore TYPE S1ap-E-RABModifyListBearerModRes PRESENCE optional }| + { ID id-E-RABFailedToModifyList CRITICALITY ignore TYPE S1ap-E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + + + +S1ap-E-RABModifyListBearerModRes ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {S1ap-E-RABModifyItemBearerModResIEs} } + + +S1ap-E-RABModifyItemBearerModResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABModifyItemBearerModRes CRITICALITY ignore TYPE S1ap-E-RABModifyItemBearerModRes PRESENCE mandatory }, + ... +} + + +S1ap-E-RABModifyItemBearerModRes ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABModifyItemBearerModResExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-E-RABModifyItemBearerModResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + + + + + +-- ************************************************************** +-- +-- E-RAB RELEASE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- E-RAB Release Command +-- +-- ************************************************************** + + +S1ap-E-RABReleaseCommand ::= SEQUENCE { + s1ap-E-RABReleaseCommand-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-E-RABReleaseCommandIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE S1ap-UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeReleasedList CRITICALITY ignore TYPE S1ap-E-RABList PRESENCE mandatory }| + { ID id-NAS-PDU CRITICALITY ignore TYPE S1ap-NAS-PDU PRESENCE optional }, + ... +} + + + + +-- ************************************************************** +-- +-- E-RAB Release Response +-- +-- ************************************************************** + + +S1ap-E-RABReleaseResponse ::= SEQUENCE { + s1ap-E-RABReleaseResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-E-RABReleaseResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABReleaseListBearerRelComp CRITICALITY ignore TYPE S1ap-E-RABReleaseListBearerRelComp PRESENCE optional }| + { ID id-E-RABFailedToReleaseList CRITICALITY ignore TYPE S1ap-E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + + + +S1ap-E-RABReleaseListBearerRelComp ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {S1ap-E-RABReleaseItemBearerRelCompIEs} } + + +S1ap-E-RABReleaseItemBearerRelCompIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABReleaseItemBearerRelComp CRITICALITY ignore TYPE S1ap-E-RABReleaseItemBearerRelComp PRESENCE mandatory }, + ... +} + + +S1ap-E-RABReleaseItemBearerRelComp ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABReleaseItemBearerRelCompExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-E-RABReleaseItemBearerRelCompExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + + + +-- ************************************************************** +-- +-- E-RAB RELEASE INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- E-RAB Release Indication +-- +-- ************************************************************** + + +S1ap-E-RABReleaseIndication ::= SEQUENCE { + s1ap-E-RABReleaseIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-E-RABReleaseIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABReleasedList CRITICALITY ignore TYPE S1ap-E-RABList PRESENCE mandatory }, + ... +} +-- ************************************************************** +-- +-- INITIAL CONTEXT SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Initial Context Setup Request +-- +-- ************************************************************** + + +S1ap-InitialContextSetupRequest ::= SEQUENCE { + s1ap-InitialContextSetupRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-InitialContextSetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE S1ap-UEAggregateMaximumBitrate PRESENCE mandatory}| + { ID id-E-RABToBeSetupListCtxtSUReq CRITICALITY reject TYPE S1ap-E-RABToBeSetupListCtxtSUReq PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE S1ap-UESecurityCapabilities PRESENCE mandatory}| + { ID id-SecurityKey CRITICALITY reject TYPE S1ap-SecurityKey PRESENCE mandatory}| + { ID id-TraceActivation CRITICALITY ignore TYPE S1ap-TraceActivation PRESENCE optional}| + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE S1ap-HandoverRestrictionList PRESENCE optional}| + { ID id-UERadioCapability CRITICALITY ignore TYPE S1ap-UERadioCapability PRESENCE optional}| + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE S1ap-SubscriberProfileIDforRFP PRESENCE optional}| + { ID id-CSFallbackIndicator CRITICALITY reject TYPE S1ap-CSFallbackIndicator PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE S1ap-SRVCCOperationPossible PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE S1ap-CSGMembershipStatus PRESENCE optional}| + { ID id-RegisteredLAI CRITICALITY ignore TYPE S1ap-LAI PRESENCE optional}| + { ID id-GUMMEI-ID CRITICALITY ignore TYPE S1ap-GUMMEI PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE optional}| + { ID id-ManagementBasedMDTAllowed CRITICALITY ignore TYPE S1ap-ManagementBasedMDTAllowed PRESENCE optional}, + ... +} + + + + + + + + +S1ap-E-RABToBeSetupListCtxtSUReq ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {S1ap-E-RABToBeSetupItemCtxtSUReqIEs} } + + +S1ap-E-RABToBeSetupItemCtxtSUReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemCtxtSUReq CRITICALITY reject TYPE S1ap-E-RABToBeSetupItemCtxtSUReq PRESENCE mandatory }, + ... +} + + +S1ap-E-RABToBeSetupItemCtxtSUReq ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + e-RABlevelQoSParameters S1ap-E-RABLevelQoSParameters, + transportLayerAddress S1ap-TransportLayerAddress, + gTP-TEID S1ap-GTP-TEID, + nAS-PDU S1ap-NAS-PDU OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABToBeSetupItemCtxtSUReqExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-E-RABToBeSetupItemCtxtSUReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-Correlation-ID CRITICALITY ignore EXTENSION S1ap-Correlation-ID PRESENCE optional}, + ... +} + + + + +-- ************************************************************** +-- +-- Initial Context Setup Response +-- +-- ************************************************************** + + +S1ap-InitialContextSetupResponse ::= SEQUENCE { + s1ap-InitialContextSetupResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-InitialContextSetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABSetupListCtxtSURes CRITICALITY ignore TYPE S1ap-E-RABSetupListCtxtSURes PRESENCE mandatory }| + { ID id-E-RABFailedToSetupListCtxtSURes CRITICALITY ignore TYPE S1ap-E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + + + +S1ap-E-RABSetupListCtxtSURes ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {S1ap-E-RABSetupItemCtxtSUResIEs} } + + +S1ap-E-RABSetupItemCtxtSUResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABSetupItemCtxtSURes CRITICALITY ignore TYPE S1ap-E-RABSetupItemCtxtSURes PRESENCE mandatory }, + ... +} + + +S1ap-E-RABSetupItemCtxtSURes ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + transportLayerAddress S1ap-TransportLayerAddress, + gTP-TEID S1ap-GTP-TEID, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABSetupItemCtxtSUResExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-E-RABSetupItemCtxtSUResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +-- ************************************************************** +-- +-- Initial Context Setup Failure +-- +-- ************************************************************** + + +S1ap-InitialContextSetupFailure ::= SEQUENCE { + s1ap-InitialContextSetupFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-InitialContextSetupFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- PAGING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + + + +-- ************************************************************** +-- +-- S1ap-Paging +-- +-- ************************************************************** + + +S1ap-Paging ::= SEQUENCE { + s1ap-Paging-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-PagingIEs S1AP-PROTOCOL-IES ::= { + { ID id-UEIdentityIndexValue CRITICALITY ignore TYPE S1ap-UEIdentityIndexValue PRESENCE mandatory}| + { ID id-UEPagingID CRITICALITY ignore TYPE S1ap-UEPagingID PRESENCE mandatory}| + { ID id-pagingDRX CRITICALITY ignore TYPE S1ap-PagingDRX PRESENCE optional}| + { ID id-CNDomain CRITICALITY ignore TYPE S1ap-CNDomain PRESENCE mandatory}| + { ID id-TAIList CRITICALITY ignore TYPE S1ap-TAIList PRESENCE mandatory}| + { ID id-CSG-IdList CRITICALITY ignore TYPE S1ap-CSG-IdList PRESENCE optional}| + { ID id-PagingPriority CRITICALITY ignore TYPE S1ap-PagingPriority PRESENCE optional}, + ... +} + + +S1ap-TAIList::= SEQUENCE (SIZE(1.. s1ap-maxnoofTAIs)) OF ProtocolIE-SingleContainer {{S1ap-TAIItemIEs}} + + +S1ap-TAIItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-TAIItem CRITICALITY ignore TYPE S1ap-TAIItem PRESENCE mandatory }, + ... +} + + +S1ap-TAIItem ::= SEQUENCE { + tAI S1ap-TAI, + iE-Extensions ProtocolExtensionContainer { {S1ap-TAIItemExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-TAIItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE REQUEST +-- +-- ************************************************************** + + +S1ap-UEContextReleaseRequest ::= SEQUENCE { + s1ap-UEContextReleaseRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UEContextReleaseRequest-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory}| + { ID id-GWContextReleaseIndication CRITICALITY reject TYPE S1ap-GWContextReleaseIndication PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- UE Context Release Command +-- +-- ************************************************************** + + +S1ap-UEContextReleaseCommand ::= SEQUENCE { + s1ap-UEContextReleaseCommand-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UEContextReleaseCommand-IEs S1AP-PROTOCOL-IES ::= { + { ID id-UE-S1AP-IDs CRITICALITY reject TYPE S1ap-UE-S1AP-IDs PRESENCE mandatory} | + + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory} , + ... +} + + +-- ************************************************************** +-- +-- UE Context Release Complete +-- +-- ************************************************************** + + +S1ap-UEContextReleaseComplete ::= SEQUENCE { + s1ap-UEContextReleaseComplete-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UEContextReleaseComplete-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + + + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- UE Context Modification Request +-- +-- ************************************************************** + + +S1ap-UEContextModificationRequest ::= SEQUENCE { + s1ap-UEContextModificationRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UEContextModificationRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-SecurityKey CRITICALITY reject TYPE S1ap-SecurityKey PRESENCE optional}| + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE S1ap-SubscriberProfileIDforRFP PRESENCE optional}| + { ID id-uEaggregateMaximumBitrate CRITICALITY ignore TYPE S1ap-UEAggregateMaximumBitrate PRESENCE optional}| + { ID id-CSFallbackIndicator CRITICALITY reject TYPE S1ap-CSFallbackIndicator PRESENCE optional}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE S1ap-UESecurityCapabilities PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE S1ap-CSGMembershipStatus PRESENCE optional}| + { ID id-RegisteredLAI CRITICALITY ignore TYPE S1ap-LAI PRESENCE optional}, + ... +} +-- ************************************************************** +-- +-- UE Context Modification Response +-- +-- ************************************************************** + + +S1ap-UEContextModificationResponse ::= SEQUENCE { + s1ap-UEContextModificationResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UEContextModificationResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +}-- ************************************************************** +-- +-- UE Context Modification Failure +-- +-- ************************************************************** + + +S1ap-UEContextModificationFailure ::= SEQUENCE { + s1ap-UEContextModificationFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UEContextModificationFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- NAS TRANSPORT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- DOWNLINK NAS TRANSPORT +-- +-- ************************************************************** + + +S1ap-DownlinkNASTransport ::= SEQUENCE { + s1ap-DownlinkNASTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-DownlinkNASTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-NAS-PDU CRITICALITY reject TYPE S1ap-NAS-PDU PRESENCE mandatory} | + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE S1ap-HandoverRestrictionList PRESENCE optional} | + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE S1ap-SubscriberProfileIDforRFP PRESENCE optional}, + ... +} + + + + +-- ************************************************************** +-- +-- INITIAL UE MESSAGE +-- +-- ************************************************************** + + +S1ap-InitialUEMessage ::= SEQUENCE { + s1ap-InitialUEMessage-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-InitialUEMessage-IEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-NAS-PDU CRITICALITY reject TYPE S1ap-NAS-PDU PRESENCE mandatory} | + { ID id-TAI CRITICALITY reject TYPE S1ap-TAI PRESENCE mandatory} | + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE S1ap-EUTRAN-CGI PRESENCE mandatory} | + { ID id-RRC-Establishment-Cause CRITICALITY ignore TYPE S1ap-RRC-Establishment-Cause PRESENCE mandatory} | + { ID id-S-TMSI CRITICALITY reject TYPE S1ap-S-TMSI PRESENCE optional} | + { ID id-CSG-Id CRITICALITY reject TYPE S1ap-CSG-Id PRESENCE optional} | + { ID id-GUMMEI-ID CRITICALITY reject TYPE S1ap-GUMMEI PRESENCE optional} | + { ID id-CellAccessMode CRITICALITY reject TYPE S1ap-CellAccessMode PRESENCE optional} | + { ID id-GW-S1ap-TransportLayerAddress CRITICALITY ignore TYPE S1ap-TransportLayerAddress PRESENCE optional} | + { ID id-RelayNode-Indicator CRITICALITY reject TYPE S1ap-RelayNode-Indicator PRESENCE optional}, + ... +} + + + + +-- ************************************************************** +-- +-- UPLINK NAS TRANSPORT +-- +-- ************************************************************** + + +S1ap-UplinkNASTransport ::= SEQUENCE { + s1ap-UplinkNASTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UplinkNASTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-NAS-PDU CRITICALITY reject TYPE S1ap-NAS-PDU PRESENCE mandatory} | + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE S1ap-EUTRAN-CGI PRESENCE mandatory} | + { ID id-TAI CRITICALITY ignore TYPE S1ap-TAI PRESENCE mandatory} | + { ID id-GW-S1ap-TransportLayerAddress CRITICALITY ignore TYPE S1ap-TransportLayerAddress PRESENCE optional}, + ... +} +-- ************************************************************** +-- +-- NAS NON DELIVERY INDICATION +-- +-- ************************************************************** + + +S1ap-NASNonDeliveryIndication ::= SEQUENCE { + s1ap-NASNonDeliveryIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-NASNonDeliveryIndication-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-NAS-PDU CRITICALITY ignore TYPE S1ap-NAS-PDU PRESENCE mandatory} | + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory} , + ... +} + + +-- ************************************************************** +-- +-- RESET ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- S1ap-Reset +-- +-- ************************************************************** + + +S1ap-Reset ::= SEQUENCE { + s1ap-Reset-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-ResetIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-ResetType CRITICALITY reject TYPE S1ap-ResetType PRESENCE mandatory }, + ... +} + + +S1ap-ResetType ::= CHOICE { + s1-Interface S1ap-ResetAll, + partOfS1-Interface S1ap-UE-associatedLogicalS1-ConnectionListRes, + ... +} + + + + + + +S1ap-ResetAll ::= ENUMERATED { + reset-all, + ... +} + + +S1ap-UE-associatedLogicalS1-ConnectionListRes ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfIndividualS1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { S1ap-UE-associatedLogicalS1-ConnectionItemRes } } + + +S1ap-UE-associatedLogicalS1-ConnectionItemRes S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionItem CRITICALITY reject TYPE S1ap-UE-associatedLogicalS1-ConnectionItem PRESENCE mandatory }, + ... +} + + + + +-- ************************************************************** +-- +-- S1ap-Reset Acknowledge +-- +-- ************************************************************** + + +S1ap-ResetAcknowledge ::= SEQUENCE { + s1ap-ResetAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-ResetAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionListResAck CRITICALITY ignore TYPE S1ap-UE-associatedLogicalS1-ConnectionListResAck PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +S1ap-UE-associatedLogicalS1-ConnectionListResAck ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfIndividualS1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { S1ap-UE-associatedLogicalS1-ConnectionItemResAck } } + + +S1ap-UE-associatedLogicalS1-ConnectionItemResAck S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionItem CRITICALITY ignore TYPE S1ap-UE-associatedLogicalS1-ConnectionItem PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- ERROR INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Error Indication +-- +-- ************************************************************** + + +S1ap-ErrorIndication ::= SEQUENCE { + s1ap-ErrorIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-ErrorIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-MME-UE-S1AP-ID PRESENCE optional } | + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE S1ap-ENB-UE-S1AP-ID PRESENCE optional } | + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE optional } | + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional } , + ... +} + + +-- ************************************************************** +-- +-- S1 SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- S1 Setup Request +-- +-- ************************************************************** + + +S1ap-S1SetupRequest ::= SEQUENCE { + s1ap-S1SetupRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-S1SetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-Global-ENB-ID CRITICALITY reject TYPE S1ap-Global-ENB-ID PRESENCE mandatory}| + { ID id-eNBname CRITICALITY ignore TYPE S1ap-ENBname PRESENCE optional}| + { ID id-SupportedTAs CRITICALITY reject TYPE S1ap-SupportedTAs PRESENCE mandatory}| + { ID id-DefaultPagingDRX CRITICALITY ignore TYPE S1ap-PagingDRX PRESENCE mandatory}| + { ID id-CSG-IdList CRITICALITY reject TYPE S1ap-CSG-IdList PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- S1 Setup Response +-- +-- ************************************************************** + + +S1ap-S1SetupResponse ::= SEQUENCE { + s1ap-S1SetupResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + + + +S1ap-S1SetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MMEname CRITICALITY ignore TYPE S1ap-MMEname PRESENCE optional}| + { ID id-ServedGUMMEIs CRITICALITY reject TYPE S1ap-ServedGUMMEIs PRESENCE mandatory}| + { ID id-RelativeMMECapacity CRITICALITY ignore TYPE S1ap-RelativeMMECapacity PRESENCE mandatory}| + { ID id-MMERelaySupportIndicator CRITICALITY ignore TYPE S1ap-MMERelaySupportIndicator PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- S1 Setup Failure +-- +-- ************************************************************** + + +S1ap-S1SetupFailure ::= SEQUENCE { + s1ap-S1SetupFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-S1SetupFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE S1ap-TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- ENB CONFIGURATION UPDATE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- eNB Configuration Update +-- +-- ************************************************************** + + +S1ap-ENBConfigurationUpdate ::= SEQUENCE { + s1ap-ENBConfigurationUpdate-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-ENBConfigurationUpdateIEs S1AP-PROTOCOL-IES ::= { + { ID id-eNBname CRITICALITY ignore TYPE S1ap-ENBname PRESENCE optional }| + { ID id-SupportedTAs CRITICALITY reject TYPE S1ap-SupportedTAs PRESENCE optional }| + { ID id-CSG-IdList CRITICALITY reject TYPE S1ap-CSG-IdList PRESENCE optional}| + { ID id-DefaultPagingDRX CRITICALITY ignore TYPE S1ap-PagingDRX PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- eNB Configuration Update Acknowledge +-- +-- ************************************************************** + + +S1ap-ENBConfigurationUpdateAcknowledge ::= SEQUENCE { + s1ap-ENBConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + + + +S1ap-ENBConfigurationUpdateAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- eNB Configuration Update Failure +-- +-- ************************************************************** + + +S1ap-ENBConfigurationUpdateFailure ::= SEQUENCE { + s1ap-ENBConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-ENBConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE S1ap-TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, +... +} + + + + +-- ************************************************************** +-- +-- MME Configuration UPDATE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- MME Configuration Update +-- +-- ************************************************************** + + +S1ap-MMEConfigurationUpdate ::= SEQUENCE { + s1ap-MMEConfigurationUpdate-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-MMEConfigurationUpdateIEs S1AP-PROTOCOL-IES ::= { + { ID id-MMEname CRITICALITY ignore TYPE S1ap-MMEname PRESENCE optional }| + { ID id-ServedGUMMEIs CRITICALITY reject TYPE S1ap-ServedGUMMEIs PRESENCE optional }| + { ID id-RelativeMMECapacity CRITICALITY reject TYPE S1ap-RelativeMMECapacity PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- MME Configuration Update Acknowledge +-- +-- ************************************************************** + + +S1ap-MMEConfigurationUpdateAcknowledge ::= SEQUENCE { + s1ap-MMEConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + + + +S1ap-MMEConfigurationUpdateAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- MME Configuration Update Failure +-- +-- ************************************************************** + + +S1ap-MMEConfigurationUpdateFailure ::= SEQUENCE { + s1ap-MMEConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-MMEConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE S1ap-TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- DOWNLINK S1 CDMA2000 TUNNELING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Downlink S1 CDMA2000 Tunneling +-- +-- ************************************************************** + + +S1ap-DownlinkS1cdma2000tunneling ::= SEQUENCE { + s1ap-DownlinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-DownlinkS1cdma2000tunnelingIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-E-RABSubjecttoDataForwardingList CRITICALITY ignore TYPE S1ap-E-RABSubjecttoDataForwardingList PRESENCE optional } | + { ID id-cdma2000HOStatus CRITICALITY ignore TYPE S1ap-Cdma2000HOStatus PRESENCE optional } | + { ID id-cdma2000RATType CRITICALITY reject TYPE S1ap-Cdma2000RATType PRESENCE mandatory } | + { ID id-cdma2000PDU CRITICALITY reject TYPE S1ap-Cdma2000PDU PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- UPLINK S1 CDMA2000 TUNNELING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Uplink S1 CDMA2000 Tunneling +-- +-- ************************************************************** + + +S1ap-UplinkS1cdma2000tunneling ::= SEQUENCE { + s1ap-UplinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UplinkS1cdma2000tunnelingIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-cdma2000RATType CRITICALITY reject TYPE S1ap-Cdma2000RATType PRESENCE mandatory } | + { ID id-cdma2000SectorID CRITICALITY reject TYPE S1ap-Cdma2000SectorID PRESENCE mandatory } | + { ID id-cdma2000HORequiredIndication CRITICALITY ignore TYPE S1ap-Cdma2000HORequiredIndication PRESENCE optional } | + { ID id-cdma2000OneXSRVCCInfo CRITICALITY reject TYPE S1ap-Cdma2000OneXSRVCCInfo PRESENCE optional } | + { ID id-cdma2000OneXRAND CRITICALITY reject TYPE S1ap-Cdma2000OneXRAND PRESENCE optional } | + { ID id-cdma2000PDU CRITICALITY reject TYPE S1ap-Cdma2000PDU PRESENCE mandatory }| + { ID id-EUTRANRoundTripDelayEstimationInfo CRITICALITY ignore TYPE S1ap-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 +-- +-- ************************************************************** + + +S1ap-UECapabilityInfoIndication ::= SEQUENCE { + s1ap-UECapabilityInfoIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UECapabilityInfoIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-UERadioCapability CRITICALITY ignore TYPE S1ap-UERadioCapability PRESENCE mandatory } , + ... +} + + +-- ************************************************************** +-- +-- eNB STATUS TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- eNB Status Transfer +-- +-- ************************************************************** + + +S1ap-ENBStatusTransfer ::= SEQUENCE { + s1ap-ENBStatusTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-ENBStatusTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-StatusTransfer-TransparentContainer CRITICALITY reject TYPE S1ap-ENB-StatusTransfer-TransparentContainer PRESENCE mandatory} , + ... +} + + + + +-- ************************************************************** +-- +-- MME STATUS TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- MME Status Transfer +-- +-- ************************************************************** + + +S1ap-MMEStatusTransfer ::= SEQUENCE { + s1ap-MMEStatusTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-MMEStatusTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-StatusTransfer-TransparentContainer CRITICALITY reject TYPE S1ap-ENB-StatusTransfer-TransparentContainer PRESENCE mandatory} , + ... +} + + + + +-- ************************************************************** +-- +-- TRACE ELEMENTARY PROCEDURES +-- +-- ************************************************************** +-- ************************************************************** +-- +-- Trace Start +-- +-- ************************************************************** + + +S1ap-TraceStart ::= SEQUENCE { + s1ap-TraceStart-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-TraceStartIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-TraceActivation CRITICALITY ignore TYPE S1ap-TraceActivation PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- Trace Failure Indication +-- +-- ************************************************************** + + +S1ap-TraceFailureIndication ::= SEQUENCE { + s1ap-TraceFailureIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-TraceFailureIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE S1ap-E-UTRAN-Trace-ID PRESENCE mandatory} | + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory} , + ... +} + + +-- ************************************************************** +-- +-- DEACTIVATE TRACE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- DEACTIVATE TRACE +-- +-- ************************************************************** + + +S1ap-DeactivateTrace ::= SEQUENCE { + s1ap-DeactivateTrace-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-DeactivateTraceIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE S1ap-E-UTRAN-Trace-ID PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- CELL TRAFFIC TRACE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- CELL TRAFFIC TRACE +-- +-- ************************************************************** + + +S1ap-CellTrafficTrace ::= SEQUENCE { + s1ap-CellTrafficTrace-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-CellTrafficTraceIEs S1AP-PROTOCOL-IES ::= { + {ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory}| + {ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory}| + {ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE S1ap-E-UTRAN-Trace-ID PRESENCE mandatory}| + {ID id-EUTRAN-CGI CRITICALITY ignore TYPE S1ap-EUTRAN-CGI PRESENCE mandatory}| + {ID id-TraceCollectionEntityIPAddress CRITICALITY ignore TYPE S1ap-TransportLayerAddress PRESENCE mandatory}| + {ID id-PrivacyIndicator CRITICALITY ignore TYPE S1ap-PrivacyIndicator PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- LOCATION ELEMENTARY PROCEDURES +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Location Reporting Control +-- +-- ************************************************************** + + +S1ap-LocationReportingControl ::= SEQUENCE { + s1ap-LocationReportingControl-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-LocationReportingControlIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-RequestType CRITICALITY ignore TYPE S1ap-RequestType PRESENCE mandatory } , + ... +} + + +-- ************************************************************** +-- +-- Location Report Failure Indication +-- +-- ************************************************************** + + +S1ap-LocationReportingFailureIndication ::= SEQUENCE { + s1ap-LocationReportingFailureIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-LocationReportingFailureIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-Cause CRITICALITY ignore TYPE S1ap-Cause PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- Location Report +-- +-- ************************************************************** + + +S1ap-LocationReport ::= SEQUENCE { + s1ap-LocationReport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-LocationReportIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE S1ap-EUTRAN-CGI PRESENCE mandatory} | + { ID id-TAI CRITICALITY ignore TYPE S1ap-TAI PRESENCE mandatory} | + { ID id-RequestType CRITICALITY ignore TYPE S1ap-RequestType PRESENCE mandatory} , + ... +} + + +-- ************************************************************** +-- +-- OVERLOAD ELEMENTARY PROCEDURES +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Overload Start +-- +-- ************************************************************** + + +S1ap-OverloadStart ::= SEQUENCE { + s1ap-OverloadStart-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-OverloadStartIEs S1AP-PROTOCOL-IES ::= { + { ID id-OverloadResponse CRITICALITY reject TYPE S1ap-OverloadResponse PRESENCE mandatory}| + { ID id-GUMMEIList CRITICALITY ignore TYPE S1ap-GUMMEIList PRESENCE optional}| + { ID id-TrafficLoadReductionIndication CRITICALITY ignore TYPE S1ap-TrafficLoadReductionIndication PRESENCE optional}, + ... +} +-- ************************************************************** +-- +-- Overload Stop +-- +-- ************************************************************** + + +S1ap-OverloadStop ::= SEQUENCE { + s1ap-OverloadStop-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-OverloadStopIEs S1AP-PROTOCOL-IES ::= { +{ ID id-GUMMEIList CRITICALITY ignore TYPE S1ap-GUMMEIList PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- WRITE-REPLACE WARNING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Write-Replace Warning Request +-- +-- ************************************************************** + + + + +S1ap-WriteReplaceWarningRequest ::= SEQUENCE { + s1ap-WriteReplaceWarningRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-WriteReplaceWarningRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE S1ap-MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE S1ap-SerialNumber PRESENCE mandatory }| + { ID id-WarningAreaList CRITICALITY ignore TYPE S1ap-WarningAreaList PRESENCE optional }| + { ID id-RepetitionPeriod CRITICALITY reject TYPE S1ap-RepetitionPeriod PRESENCE mandatory }| + { ID id-ExtendedRepetitionPeriod CRITICALITY reject TYPE S1ap-ExtendedRepetitionPeriod PRESENCE optional }| + { ID id-NumberofBroadcastRequest CRITICALITY reject TYPE S1ap-NumberofBroadcastRequest PRESENCE mandatory }| + { ID id-WarningType CRITICALITY ignore TYPE S1ap-WarningType PRESENCE optional }| + { ID id-WarningSecurityInfo CRITICALITY ignore TYPE S1ap-WarningSecurityInfo PRESENCE optional }| + { ID id-DataCodingScheme CRITICALITY ignore TYPE S1ap-DataCodingScheme PRESENCE optional }| + { ID id-WarningMessageContents CRITICALITY ignore TYPE S1ap-WarningMessageContents PRESENCE optional }| + { ID id-ConcurrentWarningMessageIndicator CRITICALITY reject TYPE S1ap-ConcurrentWarningMessageIndicator PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- Write-Replace Warning Response +-- +-- ************************************************************** + + +S1ap-WriteReplaceWarningResponse ::= SEQUENCE { + s1ap-WriteReplaceWarningResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-WriteReplaceWarningResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE S1ap-MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE S1ap-SerialNumber PRESENCE mandatory }| + { ID id-BroadcastCompletedAreaList CRITICALITY ignore TYPE S1ap-BroadcastCompletedAreaList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- eNB DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- eNB Direct Information Transfer +-- +-- ************************************************************** + + +S1ap-ENBDirectInformationTransfer ::= SEQUENCE { + s1ap-ENBDirectInformationTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-ENBDirectInformationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-Inter-SystemInformationTransferTypeEDT CRITICALITY reject TYPE S1ap-Inter-SystemInformationTransferType PRESENCE mandatory} , + ... +} + + +S1ap-Inter-SystemInformationTransferType ::= CHOICE { + rIMTransfer S1ap-RIMTransfer, + ... +} + + +-- ************************************************************** +-- +-- MME DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- MME Direct Information Transfer +-- +-- ************************************************************** + + +S1ap-MMEDirectInformationTransfer ::= SEQUENCE { + s1ap-MMEDirectInformationTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-MMEDirectInformationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-Inter-SystemInformationTransferTypeMDT CRITICALITY reject TYPE S1ap-Inter-SystemInformationTransferType PRESENCE mandatory} , + ... +} +-- ************************************************************** +-- +-- eNB CONFIGURATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- eNB Configuration Transfer +-- +-- ************************************************************** + + +S1ap-ENBConfigurationTransfer ::= SEQUENCE { + s1ap-ENBConfigurationTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-ENBConfigurationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-SONConfigurationTransferECT CRITICALITY ignore TYPE S1ap-SONConfigurationTransfer PRESENCE optional} , + ... +} + + +-- ************************************************************** +-- +-- MME CONFIGURATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- MME Configuration Transfer +-- +-- ************************************************************** + + +S1ap-MMEConfigurationTransfer ::= SEQUENCE { + s1ap-MMEConfigurationTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-MMEConfigurationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-SONConfigurationTransferMCT CRITICALITY ignore TYPE S1ap-SONConfigurationTransfer PRESENCE optional} , + ... +} + + +-- ************************************************************** +-- +-- PRIVATE MESSAGE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Private Message +-- +-- ************************************************************** + + +S1ap-PrivateMessage ::= SEQUENCE { + privateIEs PrivateIE-Container {{PrivateMessageIEs}}, + ... +} + + +PrivateMessageIEs S1AP-PRIVATE-IES ::= { + ... +} + + +-- ************************************************************** +-- +-- Kill Request +-- +-- ************************************************************** + + + + +S1ap-KillRequest ::= SEQUENCE { + s1ap-KillRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-KillRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE S1ap-MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE S1ap-SerialNumber PRESENCE mandatory }| + { ID id-WarningAreaList CRITICALITY ignore TYPE S1ap-WarningAreaList PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- Kill Response +-- +-- ************************************************************** + + +S1ap-KillResponse ::= SEQUENCE { + s1ap-KillResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-KillResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE S1ap-MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE S1ap-SerialNumber PRESENCE mandatory }| + { ID id-BroadcastCancelledAreaList CRITICALITY ignore TYPE S1ap-BroadcastCancelledAreaList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE S1ap-CriticalityDiagnostics PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- LPPA TRANSPORT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- DOWNLINK UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + + +S1ap-DownlinkUEAssociatedLPPaTransport ::= SEQUENCE { + s1ap-DownlinkUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-DownlinkUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory } | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory } | + { ID id-Routing-ID CRITICALITY reject TYPE S1ap-Routing-ID PRESENCE mandatory } | + { ID id-LPPa-PDU CRITICALITY reject TYPE S1ap-LPPa-PDU PRESENCE mandatory } , + ... +} + + +-- ************************************************************** +-- +-- UPLINK UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + + +S1ap-UplinkUEAssociatedLPPaTransport ::= SEQUENCE { + s1ap-UplinkUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UplinkUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE S1ap-MME-UE-S1AP-ID PRESENCE mandatory} | + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE S1ap-ENB-UE-S1AP-ID PRESENCE mandatory} | + { ID id-Routing-ID CRITICALITY reject TYPE S1ap-Routing-ID PRESENCE mandatory} | + { ID id-LPPa-PDU CRITICALITY reject TYPE S1ap-LPPa-PDU PRESENCE mandatory} , + ... +} + + +-- ************************************************************** +-- +-- DOWNLINK NON UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + + +S1ap-DownlinkNonUEAssociatedLPPaTransport ::= SEQUENCE { + s1ap-DownlinkNonUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-DownlinkNonUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-Routing-ID CRITICALITY reject TYPE S1ap-Routing-ID PRESENCE mandatory} | + { ID id-LPPa-PDU CRITICALITY reject TYPE S1ap-LPPa-PDU PRESENCE mandatory} , + ... +} + + +-- ************************************************************** +-- +-- UPLINK NON UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + + +S1ap-UplinkNonUEAssociatedLPPaTransport ::= SEQUENCE { + s1ap-UplinkNonUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE, + ... +} + + +S1ap-UplinkNonUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-Routing-ID CRITICALITY reject TYPE S1ap-Routing-ID PRESENCE mandatory} | + { ID id-LPPa-PDU CRITICALITY reject TYPE S1ap-LPPa-PDU 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 + S1ap-Presence +FROM S1AP-CommonDataTypes + + id-E-RABInformationListItem, + id-E-RABItem, + id-Bearers-SubjectToStatusTransfer-Item, + id-Time-Synchronization-Info, + id-x2TNLConfigurationInfo, + id-eNBX2ExtendedTransportLayerAddresses, + id-MDTConfiguration, + s1ap-maxNrOfCSGs, + s1ap-maxNrOfE-RABs, + s1ap-maxNrOfErrors, + s1ap-maxnoofBPLMNs, + s1ap-maxnoofPLMNsPerMME, + s1ap-maxnoofTACs, + s1ap-maxnoofEPLMNs, + s1ap-maxnoofEPLMNsPlusOne, + s1ap-maxnoofForbLACs, + s1ap-maxnoofForbTACs, + s1ap-maxnoofCells, + s1ap-maxnoofCellID, + s1ap-maxnoofEmergencyAreaID, + s1ap-maxnoofTAIforWarning, + s1ap-maxnoofCellinTAI, + s1ap-maxnoofCellinEAI, + s1ap-maxnoofeNBX2TLAs, + s1ap-maxnoofeNBX2ExtTLAs, + s1ap-maxnoofeNBX2GTPTLAs, + s1ap-maxnoofRATs, + s1ap-maxnoofGroupIDs, + s1ap-maxnoofMMECs, + s1ap-maxnoofTAforMDT, + s1ap-maxnoofCellIDforMDT + + + + + + +FROM S1AP-Constants + + + S1ap-Criticality, + S1ap-ProcedureCode, + S1ap-ProtocolIE-ID, + S1ap-TriggeringMessage +FROM S1AP-CommonDataTypes + + + ProtocolExtensionContainer{}, + S1AP-PROTOCOL-EXTENSION, + ProtocolIE-SingleContainer{}, + S1AP-PROTOCOL-IES + + +FROM S1AP-Containers; + + +-- A + + +S1ap-AreaScopeOfMDT ::= CHOICE { + cellBased S1ap-CellBasedMDT, + tABased S1ap-TABasedMDT, + pLMNWide NULL, + ... +} + + +S1ap-AllocationAndRetentionPriority ::= SEQUENCE { + priorityLevel S1ap-PriorityLevel, + pre-emptionCapability S1ap-Pre-emptionCapability, + pre-emptionVulnerability S1ap-Pre-emptionVulnerability, + iE-Extensions ProtocolExtensionContainer { {S1ap-AllocationAndRetentionPriority-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-AllocationAndRetentionPriority-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +-- B + + +S1ap-Bearers-SubjectToStatusTransferList ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { { S1ap-Bearers-SubjectToStatusTransfer-ItemIEs } } + + +S1ap-Bearers-SubjectToStatusTransfer-ItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-Bearers-SubjectToStatusTransfer-Item CRITICALITY ignore TYPE S1ap-Bearers-SubjectToStatusTransfer-Item PRESENCE mandatory }, + ... +} + + +S1ap-Bearers-SubjectToStatusTransfer-Item ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + uL-S1ap-COUNTvalue S1ap-COUNTvalue, + dL-S1ap-COUNTvalue S1ap-COUNTvalue, + receiveStatusofULPDCPSDUs S1ap-ReceiveStatusofULPDCPSDUs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {S1ap-Bearers-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL, + ... +} + + +S1ap-Bearers-SubjectToStatusTransfer-ItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-BitRate ::= INTEGER (0..10000000000) + + +S1ap-BPLMNs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofBPLMNs)) OF S1ap-PLMNidentity + + +S1ap-BroadcastCancelledAreaList ::= CHOICE { + cellID-Cancelled S1ap-CellID-Cancelled, + tAI-Cancelled S1ap-TAI-Cancelled, + emergencyAreaID-Cancelled S1ap-EmergencyAreaID-Cancelled, + ... +} + + +S1ap-BroadcastCompletedAreaList ::= CHOICE { + cellID-Broadcast S1ap-CellID-Broadcast, + tAI-Broadcast S1ap-TAI-Broadcast, + emergencyAreaID-Broadcast S1ap-EmergencyAreaID-Broadcast, + ... +} + + + + +-- C + + +S1ap-CancelledCellinEAI ::= SEQUENCE (SIZE(1..s1ap-maxnoofCellinEAI)) OF S1ap-CancelledCellinEAI-Item + + +S1ap-CancelledCellinEAI-Item ::= SEQUENCE { + eCGI S1ap-EUTRAN-CGI, + numberOfBroadcasts S1ap-NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {S1ap-CancelledCellinEAI-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-CancelledCellinEAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CancelledCellinTAI ::= SEQUENCE (SIZE(1..s1ap-maxnoofCellinTAI)) OF S1ap-CancelledCellinTAI-Item + + +S1ap-CancelledCellinTAI-Item ::= SEQUENCE{ + eCGI S1ap-EUTRAN-CGI, + numberOfBroadcasts S1ap-NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {S1ap-CancelledCellinTAI-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-CancelledCellinTAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-Cause ::= CHOICE { + radioNetwork S1ap-CauseRadioNetwork, + transport S1ap-CauseTransport, + nas S1ap-CauseNas, + protocol S1ap-CauseProtocol, + misc S1ap-CauseMisc, + ... +} + + +S1ap-CauseMisc ::= ENUMERATED { + control-processing-overload, + not-enough-user-plane-processing-resources, + hardware-failure, + om-intervention, + unspecified, + unknown-PLMN, +... +} + + +S1ap-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, + ... +} + + +S1ap-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-S1ap-E-RAB-ID, + multiple-S1ap-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-S1ap-QCI-value, + invalid-CSG-Id + + +} + + +S1ap-CauseTransport ::= ENUMERATED { + transport-resource-unavailable, + unspecified, + ... +} + + +S1ap-CauseNas ::= ENUMERATED { + normal-release, + authentication-failure, + detach, + unspecified, + ..., + csg-subscription-expiry +} + + +S1ap-CellAccessMode ::= ENUMERATED { + hybrid, + ... +} + + +S1ap-CellIdentity ::= BIT STRING (SIZE (28)) + + +S1ap-CellID-Broadcast ::= SEQUENCE (SIZE(1..s1ap-maxnoofCellID)) OF S1ap-CellID-Broadcast-Item + + +S1ap-CellID-Broadcast-Item ::= SEQUENCE { + eCGI S1ap-EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {S1ap-CellID-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-CellID-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CellID-Cancelled::= SEQUENCE (SIZE(1..s1ap-maxnoofCellID)) OF S1ap-CellID-Cancelled-Item + + +S1ap-CellID-Cancelled-Item ::= SEQUENCE { + eCGI S1ap-EUTRAN-CGI, + numberOfBroadcasts S1ap-NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {S1ap-CellID-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-CellID-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CellBasedMDT::= SEQUENCE { + cellIdListforMDT S1ap-CellIdListforMDT, + iE-Extensions ProtocolExtensionContainer { {S1ap-CellBasedMDT-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-CellBasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CellIdListforMDT ::= SEQUENCE (SIZE(1..s1ap-maxnoofCellIDforMDT)) OF S1ap-EUTRAN-CGI + + +S1ap-Cdma2000PDU ::= OCTET STRING + + +S1ap-Cdma2000RATType ::= ENUMERATED { + hRPD, + onexRTT, + ... +} + + +S1ap-Cdma2000SectorID ::= OCTET STRING + + +S1ap-Cdma2000HOStatus ::= ENUMERATED { + hOSuccess, + hOFailure, + ... +} + + +S1ap-Cdma2000HORequiredIndication ::= ENUMERATED { + true, + ... +} + + +S1ap-Cdma2000OneXSRVCCInfo ::= SEQUENCE { + cdma2000OneXMEID S1ap-Cdma2000OneXMEID, + cdma2000OneXMSI S1ap-Cdma2000OneXMSI, + cdma2000OneXPilot S1ap-Cdma2000OneXPilot, + iE-Extensions ProtocolExtensionContainer { {S1ap-Cdma2000OneXSRVCCInfo-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-Cdma2000OneXSRVCCInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-Cdma2000OneXMEID ::= OCTET STRING + + +S1ap-Cdma2000OneXMSI ::= OCTET STRING + + +S1ap-Cdma2000OneXPilot ::= OCTET STRING + + +S1ap-Cdma2000OneXRAND ::= OCTET STRING + + + + +S1ap-Cell-Size ::= ENUMERATED {verysmall, small, medium, large, ...} + + +S1ap-CellType ::= SEQUENCE { + cell-Size S1ap-Cell-Size, + iE-Extensions ProtocolExtensionContainer { { S1ap-CellType-ExtIEs}} OPTIONAL, + ... +} + + +S1ap-CellType-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CGI ::= SEQUENCE { + pLMNidentity S1ap-PLMNidentity, + lAC S1ap-LAC, + cI S1ap-CI, + rAC S1ap-RAC OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {S1ap-CGI-ExtIEs} } OPTIONAL, + ... + } + + +S1ap-CGI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CI ::= OCTET STRING (SIZE (2)) + + +S1ap-CNDomain ::= ENUMERATED { + ps, + cs +} + + +S1ap-ConcurrentWarningMessageIndicator ::= ENUMERATED { + true +} + + +S1ap-Correlation-ID ::= OCTET STRING (SIZE (4)) + + +S1ap-CSFallbackIndicator ::= ENUMERATED { + cs-fallback-required, + ..., + cs-fallback-high-priority +} + + +S1ap-CSG-Id ::= BIT STRING (SIZE (27)) + + + + +S1ap-CSG-IdList ::= SEQUENCE (SIZE (1..s1ap-maxNrOfCSGs)) OF S1ap-CSG-IdList-Item + + +S1ap-CSG-IdList-Item ::= SEQUENCE { + cSG-Id S1ap-CSG-Id, + iE-Extensions ProtocolExtensionContainer { {S1ap-CSG-IdList-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-CSG-IdList-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CSGMembershipStatus ::= ENUMERATED { + member, + not-member +} + + + + +S1ap-COUNTvalue ::= SEQUENCE { + pDCP-SN S1ap-PDCP-SN, + hFN S1ap-HFN, + iE-Extensions ProtocolExtensionContainer { {S1ap-COUNTvalue-ExtIEs} } OPTIONAL, + ... +} +S1ap-COUNTvalue-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CriticalityDiagnostics ::= SEQUENCE { + procedureCode S1ap-ProcedureCode OPTIONAL, + triggeringMessage S1ap-TriggeringMessage OPTIONAL, + procedureCriticality S1ap-Criticality OPTIONAL, + iEsCriticalityDiagnostics S1ap-CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{S1ap-CriticalityDiagnostics-ExtIEs}} OPTIONAL, + ... +} + + +S1ap-CriticalityDiagnostics-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..s1ap-maxNrOfErrors)) OF S1ap-CriticalityDiagnostics-S1ap-IE-Item + + +S1ap-CriticalityDiagnostics-S1ap-IE-Item ::= SEQUENCE { + iECriticality S1ap-Criticality, + iE-ID S1ap-ProtocolIE-ID, + typeOfError S1ap-TypeOfError, + iE-Extensions ProtocolExtensionContainer {{S1ap-CriticalityDiagnostics-IE-Item-ExtIEs}} OPTIONAL, + ... +} + + +S1ap-CriticalityDiagnostics-IE-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +-- D + + +S1ap-DataCodingScheme ::= BIT STRING (SIZE (8)) + + +S1ap-DL-Forwarding ::= ENUMERATED { + dL-Forwarding-proposed, + ... +} + + +S1ap-Direct-Forwarding-Path-Availability ::= ENUMERATED { + directPathAvailable, + ... +} + + +S1ap-Data-Forwarding-Not-Possible ::= ENUMERATED { + data-Forwarding-not-Possible, + ... +} + + +-- E + + +S1ap-ECGIList ::= SEQUENCE (SIZE(1..s1ap-maxnoofCellID)) OF S1ap-EUTRAN-CGI + + +S1ap-EmergencyAreaIDList ::= SEQUENCE (SIZE(1..s1ap-maxnoofEmergencyAreaID)) OF S1ap-EmergencyAreaID + + +S1ap-EmergencyAreaID ::= OCTET STRING (SIZE (3)) + + +S1ap-EmergencyAreaID-Broadcast ::= SEQUENCE (SIZE(1..s1ap-maxnoofEmergencyAreaID)) OF S1ap-EmergencyAreaID-Broadcast-Item + + +S1ap-EmergencyAreaID-Broadcast-Item ::= SEQUENCE { + emergencyAreaID S1ap-EmergencyAreaID, + completedCellinEAI S1ap-CompletedCellinEAI, + iE-Extensions ProtocolExtensionContainer { {S1ap-EmergencyAreaID-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-EmergencyAreaID-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-EmergencyAreaID-Cancelled ::= SEQUENCE (SIZE(1..s1ap-maxnoofEmergencyAreaID)) OF S1ap-EmergencyAreaID-Cancelled-Item + + +S1ap-EmergencyAreaID-Cancelled-Item ::= SEQUENCE { + emergencyAreaID S1ap-EmergencyAreaID, + cancelledCellinEAI S1ap-CancelledCellinEAI, + iE-Extensions ProtocolExtensionContainer { {S1ap-EmergencyAreaID-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-EmergencyAreaID-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-CompletedCellinEAI ::= SEQUENCE (SIZE(1..s1ap-maxnoofCellinEAI)) OF S1ap-CompletedCellinEAI-Item + + +S1ap-CompletedCellinEAI-Item ::= SEQUENCE { + eCGI S1ap-EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {S1ap-CompletedCellinEAI-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-CompletedCellinEAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-ENB-ID ::= CHOICE { + macroENB-ID BIT STRING (SIZE(20)), + homeENB-ID BIT STRING (SIZE(28)), + ... +} + + +S1ap-GERAN-Cell-ID ::= SEQUENCE { + lAI S1ap-LAI, + rAC S1ap-RAC, + cI S1ap-CI, + iE-Extensions ProtocolExtensionContainer { { S1ap-GERAN-Cell-ID-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-GERAN-Cell-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-Global-ENB-ID ::= SEQUENCE { + pLMNidentity S1ap-PLMNidentity, + eNB-ID S1ap-ENB-ID, + iE-Extensions ProtocolExtensionContainer { {S1ap-GlobalENB-ID-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-GlobalENB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-GUMMEIList::= SEQUENCE (SIZE (1.. s1ap-maxnoofMMECs)) OF S1ap-GUMMEI + + +S1ap-ENB-StatusTransfer-TransparentContainer ::= SEQUENCE { + bearers-SubjectToStatusTransferList S1ap-Bearers-SubjectToStatusTransferList, + iE-Extensions ProtocolExtensionContainer { {S1ap-ENB-StatusTransfer-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-ENB-StatusTransfer-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-ENB-UE-S1AP-ID ::= INTEGER (0..16777215) + + +S1ap-ENBname ::= PrintableString (SIZE (1..150,...)) + + +S1ap-ENBX2TLAs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofeNBX2TLAs)) OF S1ap-TransportLayerAddress + + +S1ap-EncryptionAlgorithms ::= BIT STRING (SIZE (16,...)) + + +S1ap-EPLMNs ::= SEQUENCE (SIZE(1..s1ap-maxnoofEPLMNs)) OF S1ap-PLMNidentity +S1ap-EventType ::= ENUMERATED { + direct, + change-of-serve-cell, + stop-change-of-serve-cell, + ... +} + + +S1ap-E-RAB-ID ::= INTEGER (0..15, ...) + + +S1ap-E-RABInformationList ::= SEQUENCE (SIZE (1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { { S1ap-E-RABInformationListIEs } } + + +S1ap-E-RABInformationListIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABInformationListItem CRITICALITY ignore TYPE S1ap-E-RABInformationListItem PRESENCE mandatory }, + ... +} + + +S1ap-E-RABInformationListItem ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + dL-Forwarding S1ap-DL-Forwarding OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABInformationListItem-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABInformationListItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-E-RABList ::= SEQUENCE (SIZE(1.. s1ap-maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {S1ap-E-RABItemIEs} } + + +S1ap-E-RABItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABItem CRITICALITY ignore TYPE S1ap-E-RABItem PRESENCE mandatory }, + ... +} + + +S1ap-E-RABItem ::= SEQUENCE { + e-RAB-ID S1ap-E-RAB-ID, + cause S1ap-Cause, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABItem-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +S1ap-E-RABLevelQoSParameters ::= SEQUENCE { + qCI S1ap-QCI, + allocationRetentionPriority S1ap-AllocationAndRetentionPriority, + gbrQosInformation S1ap-GBR-QosInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {S1ap-E-RABQoSParameters-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-E-RABQoSParameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +S1ap-EUTRAN-CGI ::= SEQUENCE { + pLMNidentity S1ap-PLMNidentity, + cell-ID S1ap-CellIdentity, + iE-Extensions ProtocolExtensionContainer { {S1ap-EUTRAN-CGI-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-EUTRAN-CGI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-EUTRANRoundTripDelayEstimationInfo ::= INTEGER (0..2047) + + +S1ap-ExtendedRNC-ID ::= INTEGER (4096..65535) + + +S1ap-ExtendedRepetitionPeriod ::= INTEGER (4096..131071) + + +-- F + + +S1ap-ForbiddenInterRATs ::= ENUMERATED { + all, + geran, + utran, + cdma2000, + ..., + geranandutran, + cdma2000andutran + + +} + + +S1ap-ForbiddenTAs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofEPLMNsPlusOne)) OF S1ap-ForbiddenTAs-Item + + +S1ap-ForbiddenTAs-Item ::= SEQUENCE { + pLMN-Identity S1ap-PLMNidentity, + forbiddenTACs S1ap-ForbiddenTACs, + iE-Extensions ProtocolExtensionContainer { {S1ap-ForbiddenTAs-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-ForbiddenTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-ForbiddenTACs ::= SEQUENCE (SIZE(1..s1ap-maxnoofForbTACs)) OF S1ap-TAC + + +S1ap-ForbiddenLAs ::= SEQUENCE (SIZE(1..s1ap-maxnoofEPLMNsPlusOne)) OF S1ap-ForbiddenLAs-Item + + +S1ap-ForbiddenLAs-Item ::= SEQUENCE { + pLMN-Identity S1ap-PLMNidentity, + forbiddenLACs S1ap-ForbiddenLACs, + iE-Extensions ProtocolExtensionContainer { {S1ap-ForbiddenLAs-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-ForbiddenLAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-ForbiddenLACs ::= SEQUENCE (SIZE(1..s1ap-maxnoofForbLACs)) OF S1ap-LAC + + +-- G + + +S1ap-GBR-QosInformation ::= SEQUENCE { + e-RAB-MaximumBitrateDL S1ap-BitRate, + e-RAB-MaximumBitrateUL S1ap-BitRate, + e-RAB-GuaranteedBitrateDL S1ap-BitRate, + e-RAB-GuaranteedBitrateUL S1ap-BitRate, + iE-Extensions ProtocolExtensionContainer { { S1ap-GBR-QosInformation-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-GBR-QosInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +S1ap-GTP-TEID ::= OCTET STRING (SIZE (4)) + + +S1ap-GUMMEI ::= SEQUENCE { + pLMN-Identity S1ap-PLMNidentity, + mME-Group-ID S1ap-MME-Group-ID, + mME-Code S1ap-MME-Code, + iE-Extensions ProtocolExtensionContainer { {S1ap-GUMMEI-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-GUMMEI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-GWContextReleaseIndication ::= ENUMERATED { + true, + ... +} + + +-- H + + +S1ap-HandoverRestrictionList ::= SEQUENCE { + servingPLMN S1ap-PLMNidentity, + equivalentPLMNs S1ap-EPLMNs OPTIONAL, + forbiddenTAs S1ap-ForbiddenTAs OPTIONAL, + forbiddenLAs S1ap-ForbiddenLAs OPTIONAL, + forbiddenInterRATs S1ap-ForbiddenInterRATs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {S1ap-HandoverRestrictionList-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-HandoverRestrictionList-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-HandoverType ::= ENUMERATED { + intralte, + ltetoutran, + ltetogeran, + utrantolte, + gerantolte, + ... +} + + +S1ap-HFN ::= INTEGER (0..1048575) + + +-- I + + +S1ap-ImmediateMDT ::= SEQUENCE { + measurementsToActivate S1ap-MeasurementsToActivate, + reportingTriggerMDT S1ap-ReportingTriggerMDT, + thresholdeventA2 S1ap-ThresholdEventA2 OPTIONAL, +-- Included in case of event-triggered reporting for measurement M1 + periodicReportingMDT S1ap-PeriodicReportingMDT OPTIONAL, +-- Included in case of periodic reporting + iE-Extensions ProtocolExtensionContainer { { S1ap-ImmediateMDT-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-ImmediateMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-IMSI ::= OCTET STRING (SIZE (3..8)) + + +S1ap-IntegrityProtectionAlgorithms ::= BIT STRING (SIZE (16,...)) + + +S1ap-InterfacesToTrace ::= BIT STRING (SIZE (8)) + + + + + + +-- J +-- K +-- L + + + + +S1ap-LAC ::= OCTET STRING (SIZE (2)) + + +S1ap-LAI ::= SEQUENCE { + pLMNidentity S1ap-PLMNidentity, + lAC S1ap-LAC, + iE-Extensions ProtocolExtensionContainer { {S1ap-LAI-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-LAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-LastVisitedCell-Item ::= CHOICE { + e-UTRAN-Cell S1ap-LastVisitedEUTRANCellInformation, + uTRAN-Cell S1ap-LastVisitedUTRANCellInformation, + gERAN-Cell S1ap-LastVisitedGERANCellInformation, + ... +} +S1ap-LastVisitedEUTRANCellInformation ::= SEQUENCE { + global-Cell-ID S1ap-EUTRAN-CGI, + cellType S1ap-CellType, + time-UE-StayedInCell S1ap-Time-UE-StayedInCell, + iE-Extensions ProtocolExtensionContainer { { S1ap-LastVisitedEUTRANCellInformation-ExtIEs} } OPTIONAL, + ... +} +S1ap-LastVisitedEUTRANCellInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} +S1ap-LastVisitedUTRANCellInformation ::= OCTET STRING + + +S1ap-LastVisitedGERANCellInformation ::= CHOICE { + undefined NULL, + ... +} + + +S1ap-L3-Information ::= OCTET STRING +-- This is a dummy S1ap-IE used only as a reference to the actual definition in relevant specification. + + +S1ap-LPPa-PDU ::= OCTET STRING + + +S1ap-LoggedMDT ::= SEQUENCE { + loggingInterval S1ap-LoggingInterval, + loggingDuration S1ap-LoggingDuration, + iE-Extensions ProtocolExtensionContainer { {S1ap-LoggedMDT-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-LoggedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +... +} + + +S1ap-LoggingInterval ::= ENUMERATED {ms128, ms256, ms512, ms1024, ms2048, ms3072, ms4096, ms6144} + + +S1ap-LoggingDuration ::= ENUMERATED {m10, m20, m40, m60, m90, m120} + + +-- M + + +S1ap-MDT-Activation ::= ENUMERATED { + immediate-MDT-only, + immediate-MDT-and-Trace, + logged-MDT-only, + ... +} + + +S1ap-MDT-Configuration ::= SEQUENCE { + mdt-Activation S1ap-MDT-Activation, + areaScopeOfMDT S1ap-AreaScopeOfMDT, + mDTMode S1ap-MDTMode, + iE-Extensions ProtocolExtensionContainer { { S1ap-MDT-Configuration-ExtIEs} } OPTIONAL, + ... +} +S1ap-MDT-Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-ManagementBasedMDTAllowed ::= ENUMERATED {allowed, ...} + + +S1ap-PrivacyIndicator ::= ENUMERATED { + immediate-MDT, + logged-MDT, + ... +} + + +S1ap-MDTMode ::= CHOICE { + immediateMDT S1ap-ImmediateMDT, + loggedMDT S1ap-LoggedMDT, + ... +} + + +S1ap-MeasurementsToActivate ::= BIT STRING (SIZE (8)) + + +S1ap-MeasurementThresholdA2 ::= CHOICE { + threshold-RSRP S1ap-Threshold-RSRP, + threshold-RSRQ S1ap-Threshold-RSRQ, + ... +} + + +S1ap-MessageIdentifier ::= BIT STRING (SIZE (16)) + + +S1ap-MMEname ::= PrintableString (SIZE (1..150,...)) + + +S1ap-MMERelaySupportIndicator ::= ENUMERATED {true, ...} + + +S1ap-MME-Group-ID ::= OCTET STRING (SIZE (2)) + + +S1ap-MME-Code ::= OCTET STRING (SIZE (1)) + + +S1ap-MME-UE-S1AP-ID ::= INTEGER (0..4294967295) +S1ap-M-TMSI ::= OCTET STRING (SIZE (4)) + + +S1ap-MSClassmark2 ::= OCTET STRING +S1ap-MSClassmark3 ::= OCTET STRING + + +-- N + + +S1ap-NAS-PDU ::= OCTET STRING + + +S1ap-NASSecurityParametersfromE-UTRAN ::= OCTET STRING + + +S1ap-NASSecurityParameterstoE-UTRAN ::= OCTET STRING + + +S1ap-NumberofBroadcastRequest ::= INTEGER (0..65535) + + +S1ap-NumberOfBroadcasts ::= INTEGER (0..65535) + + +-- O +S1ap-OldBSS-ToNewBSS-Information ::= OCTET STRING +-- This is a dummy S1ap-IE used only as a reference to the actual definition in relevant specification. + + +S1ap-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 +} + + +S1ap-OverloadResponse ::= CHOICE { + overloadAction S1ap-OverloadAction, + ... +} + + + + +-- P + + +S1ap-PagingDRX ::= ENUMERATED { + v32, + v64, + v128, + v256, + ... + } + + +S1ap-PagingPriority ::= ENUMERATED { + priolevel1, + priolevel2, + priolevel3, + priolevel4, + priolevel5, + priolevel6, + priolevel7, + priolevel8, + ... +} + + +S1ap-PDCP-SN ::= INTEGER (0..4095) + + +S1ap-PeriodicReportingMDT ::= SEQUENCE { + reportInterval S1ap-ReportIntervalMDT, + reportAmount S1ap-ReportAmountMDT, + iE-Extensions ProtocolExtensionContainer { { S1ap-PeriodicReportingMDT-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-PeriodicReportingMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-PLMNidentity ::= S1ap-TBCD-STRING + + +S1ap-Pre-emptionCapability ::= ENUMERATED { + shall-not-trigger-pre-emption, + may-trigger-pre-emption +} + + +S1ap-Pre-emptionVulnerability ::= ENUMERATED { + not-pre-emptable, + pre-emptable +} + + +S1ap-PriorityLevel ::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15) + + +S1ap-PS-ServiceNotAvailable ::= ENUMERATED { + ps-service-not-available, + ... +} + + +-- Q + + +S1ap-QCI ::= INTEGER (0..255) + + +-- R + + +S1ap-ReceiveStatusofULPDCPSDUs ::= BIT STRING (SIZE(4096)) + + +S1ap-RelativeMMECapacity ::= INTEGER (0..255) + + +S1ap-RelayNode-Indicator ::= ENUMERATED { + true, + ... +} + + +S1ap-RAC ::= OCTET STRING (SIZE (1)) + + +S1ap-ReportAmountMDT ::= ENUMERATED{r1, r2, r4, r8, r16, r32, r64, rinfinity} + + +S1ap-ReportIntervalMDT ::= ENUMERATED {ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60} + + +S1ap-ReportingTriggerMDT ::= ENUMERATED{ + periodic, + a2eventtriggered, + ... +} + + +S1ap-RequestType ::= SEQUENCE { + eventType S1ap-EventType, + reportArea S1ap-ReportArea, + iE-Extensions ProtocolExtensionContainer { { S1ap-RequestType-ExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-RequestType-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-RIMTransfer ::= SEQUENCE { + rIMInformation S1ap-RIMInformation, + rIMRoutingAddress S1ap-RIMRoutingAddress OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { S1ap-RIMTransfer-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-RIMTransfer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-RIMInformation ::= OCTET STRING + + +S1ap-RIMRoutingAddress ::= CHOICE { + gERAN-Cell-ID S1ap-GERAN-Cell-ID, + ..., + targetRNC-ID S1ap-TargetRNC-ID +} + + +S1ap-ReportArea ::= ENUMERATED { + ecgi, + ... +} + + +S1ap-RepetitionPeriod ::= INTEGER (0..4095) + + + + +S1ap-RNC-ID ::= INTEGER (0..4095) + + +S1ap-RRC-Container ::= OCTET STRING + + +S1ap-RRC-Establishment-Cause ::= ENUMERATED { + emergency, + highPriorityAccess, + mt-Access, + mo-Signalling, + mo-Data, + ..., + delay-TolerantAccess +} + + +S1ap-Routing-ID ::= INTEGER (0..255) + + +-- S + + + + +S1ap-SecurityKey ::= BIT STRING (SIZE(256)) + + + + + + +S1ap-SecurityContext ::= SEQUENCE { + nextHopChainingCount INTEGER (0..7), + nextHopParameter S1ap-SecurityKey, + iE-Extensions ProtocolExtensionContainer { { S1ap-SecurityContext-ExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-SecurityContext-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-SerialNumber ::= BIT STRING (SIZE (16)) + + +S1ap-SONInformation ::= CHOICE{ + sONInformationRequest S1ap-SONInformationRequest, + sONInformationReply S1ap-SONInformationReply, + ... +} + + +S1ap-SONInformationRequest ::= ENUMERATED { + x2TNL-Configuration-Info, + ..., + time-Synchronization-Info} + + +S1ap-SONInformationReply ::= SEQUENCE { + x2TNLConfigurationInfo S1ap-X2TNLConfigurationInfo OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{S1ap-SONInformationReply-ExtIEs}} OPTIONAL, + ... +} + + +S1ap-SONInformationReply-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Release 9 to transfer Time synchronization information -- + {ID id-Time-Synchronization-Info CRITICALITY ignore EXTENSION S1ap-TimeSynchronizationInfo PRESENCE optional}, + ... +} + + + + +S1ap-SONConfigurationTransfer ::= SEQUENCE { + targeteNB-ID S1ap-TargeteNB-ID, + sourceeNB-ID S1ap-SourceeNB-ID, + sONInformation S1ap-SONInformation, + iE-Extensions ProtocolExtensionContainer { { S1ap-SONConfigurationTransfer-ExtIEs} } OPTIONAL, +... +} + + +S1ap-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 S1ap-X2TNLConfigurationInfo PRESENCE conditional + -- This S1ap-IE shall be present if the SON Information S1ap-IE contains the SON Information Request S1ap-IE and the SON Information Request S1ap-IE is set to !^0X2TNL Configuration Info!+/- -- }, + ... +} + + + + + + +S1ap-Source-ToTarget-TransparentContainer ::= OCTET STRING +-- This S1ap-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. + + +S1ap-SourceBSS-ToTargetBSS-TransparentContainer ::= OCTET STRING +-- This is a dummy S1ap-IE used only as a reference to the actual definition in relevant specification. + + +S1ap-SourceeNB-ID ::= SEQUENCE { + global-S1ap-ENB-ID S1ap-Global-ENB-ID, + selected-S1ap-TAI S1ap-TAI, + iE-Extensions ProtocolExtensionContainer { {S1ap-SourceeNB-ID-ExtIEs} } OPTIONAL +} + + +S1ap-SourceeNB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-SRVCCOperationPossible ::= ENUMERATED { + possible, + ... +} + + +S1ap-SRVCCHOIndication ::= ENUMERATED { + pSandCS, + cSonly, + ... +} + + +S1ap-SourceeNB-ToTargeteNB-TransparentContainer ::= SEQUENCE { + rRC-Container S1ap-RRC-Container, + e-RABInformationList S1ap-E-RABInformationList OPTIONAL, + targetCell-ID S1ap-EUTRAN-CGI, + subscriberProfileIDforRFP S1ap-SubscriberProfileIDforRFP OPTIONAL, + uE-HistoryInformation S1ap-UE-HistoryInformation, + iE-Extensions ProtocolExtensionContainer { {S1ap-SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +S1ap-SourceRNC-ToTargetRNC-TransparentContainer ::= OCTET STRING +-- This is a dummy S1ap-IE used only as a reference to the actual definition in relevant specification. + + + + +S1ap-ServedGUMMEIs ::= SEQUENCE (SIZE (1.. s1ap-maxnoofRATs)) OF S1ap-ServedGUMMEIsItem + + +S1ap-ServedGUMMEIsItem ::= SEQUENCE { + servedPLMNs S1ap-ServedPLMNs, + servedGroupIDs S1ap-ServedGroupIDs, + servedMMECs S1ap-ServedMMECs, + iE-Extensions ProtocolExtensionContainer { {S1ap-ServedGUMMEIsItem-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-ServedGUMMEIsItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-ServedGroupIDs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofGroupIDs)) OF S1ap-MME-Group-ID +S1ap-ServedMMECs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofMMECs)) OF S1ap-MME-Code + + +S1ap-ServedPLMNs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofPLMNsPerMME)) OF S1ap-PLMNidentity + + +S1ap-SubscriberProfileIDforRFP ::= INTEGER (1..256) + + +S1ap-SupportedTAs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofTACs)) OF S1ap-SupportedTAs-Item + + +S1ap-SupportedTAs-Item ::= SEQUENCE { + tAC S1ap-TAC, + broadcastPLMNs S1ap-BPLMNs, + iE-Extensions ProtocolExtensionContainer { {S1ap-SupportedTAs-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-SupportedTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-StratumLevel ::= INTEGER (0..3, ...) + + +S1ap-SynchronizationStatus ::= ENUMERATED { synchronous, asynchronous, ... } + + +S1ap-TimeSynchronizationInfo ::= SEQUENCE { + stratumLevel S1ap-StratumLevel, + synchronizationStatus S1ap-SynchronizationStatus, + iE-Extensions ProtocolExtensionContainer { { S1ap-TimeSynchronizationInfo-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-TimeSynchronizationInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-S-TMSI ::= SEQUENCE { + mMEC S1ap-MME-Code, + m-TMSI S1ap-M-TMSI, + iE-Extensions ProtocolExtensionContainer { {S1ap-S-TMSI-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-S-TMSI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- T + + +S1ap-TAC ::= OCTET STRING (SIZE (2)) + + +S1ap-TAIListforWarning ::= SEQUENCE (SIZE(1..s1ap-maxnoofTAIforWarning)) OF S1ap-TAI + + +S1ap-TAI ::= SEQUENCE { + pLMNidentity S1ap-PLMNidentity, + tAC S1ap-TAC, + iE-Extensions ProtocolExtensionContainer { {S1ap-TAI-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-TAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-TAI-Broadcast ::= SEQUENCE (SIZE(1..s1ap-maxnoofTAIforWarning)) OF S1ap-TAI-Broadcast-Item + + +S1ap-TAI-Broadcast-Item ::= SEQUENCE { + tAI S1ap-TAI, + completedCellinTAI S1ap-CompletedCellinTAI, + iE-Extensions ProtocolExtensionContainer { {S1ap-TAI-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-TAI-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-TAI-Cancelled ::= SEQUENCE (SIZE(1..s1ap-maxnoofTAIforWarning)) OF S1ap-TAI-Cancelled-Item + + +S1ap-TAI-Cancelled-Item ::= SEQUENCE { + tAI S1ap-TAI, + cancelledCellinTAI S1ap-CancelledCellinTAI, + iE-Extensions ProtocolExtensionContainer { {S1ap-TAI-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-TAI-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-TABasedMDT ::= SEQUENCE { + tAListforMDT S1ap-TAListforMDT, + iE-Extensions ProtocolExtensionContainer { {S1ap-TABasedMDT-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-TABasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-TAListforMDT ::= SEQUENCE (SIZE(1..s1ap-maxnoofTAforMDT)) OF S1ap-TAC + + +S1ap-CompletedCellinTAI ::= SEQUENCE (SIZE(1..s1ap-maxnoofCellinTAI)) OF S1ap-CompletedCellinTAI-Item + + +S1ap-CompletedCellinTAI-Item ::= SEQUENCE{ + eCGI S1ap-EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {S1ap-CompletedCellinTAI-Item-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-CompletedCellinTAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-TBCD-STRING ::= OCTET STRING (SIZE (3)) + + +S1ap-TargetID ::= CHOICE { + targeteNB-ID S1ap-TargeteNB-ID, + targetRNC-ID S1ap-TargetRNC-ID, + cGI S1ap-CGI, + ... +} + + +S1ap-TargeteNB-ID ::= SEQUENCE { + global-S1ap-ENB-ID S1ap-Global-ENB-ID, + selected-S1ap-TAI S1ap-TAI, + iE-Extensions ProtocolExtensionContainer { {S1ap-TargeteNB-ID-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-TargeteNB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-TargetRNC-ID ::= SEQUENCE { + lAI S1ap-LAI, + rAC S1ap-RAC OPTIONAL, + rNC-ID S1ap-RNC-ID, + extendedRNC-ID S1ap-ExtendedRNC-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {S1ap-TargetRNC-ID-ExtIEs} } OPTIONAL, + ... + } + + + + +S1ap-TargetRNC-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +S1ap-TargeteNB-ToSourceeNB-TransparentContainer ::= SEQUENCE { + rRC-Container S1ap-RRC-Container, + iE-Extensions ProtocolExtensionContainer { {S1ap-TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-Target-ToSource-TransparentContainer ::= OCTET STRING +-- This S1ap-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. + + +S1ap-TargetRNC-ToSourceRNC-TransparentContainer ::= OCTET STRING +-- This is a dummy S1ap-IE used only as a reference to the actual definition in relevant specification. + + +S1ap-TargetBSS-ToSourceBSS-TransparentContainer ::= OCTET STRING +-- This is a dummy S1ap-IE used only as a reference to the actual definition in relevant specification. + + +S1ap-ThresholdEventA2 ::= SEQUENCE { + measurementThreshold S1ap-MeasurementThresholdA2, + iE-Extensions ProtocolExtensionContainer { { S1ap-ThresholdEventA2-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-ThresholdEventA2-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-Threshold-RSRP ::= INTEGER(0..97) + + +S1ap-Threshold-RSRQ ::= INTEGER(0..34) + + +S1ap-TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...} + + +S1ap-Time-UE-StayedInCell ::= INTEGER (0..4095) + + +S1ap-TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...)) + + +S1ap-TraceActivation ::= SEQUENCE { + e-UTRAN-Trace-ID S1ap-E-UTRAN-Trace-ID, + interfacesToTrace S1ap-InterfacesToTrace, + traceDepth S1ap-TraceDepth, + traceCollectionEntityIPAddress S1ap-TransportLayerAddress, + iE-Extensions ProtocolExtensionContainer { { S1ap-TraceActivation-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-TraceActivation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Rel-10 to support MDT -- + { ID id-MDTConfiguration CRITICALITY ignore EXTENSION S1ap-MDT-Configuration PRESENCE optional }, + ... +} + + +S1ap-TraceDepth ::= ENUMERATED { + minimum, + medium, + maximum, + minimumWithoutVendorSpecificExtension, + mediumWithoutVendorSpecificExtension, + maximumWithoutVendorSpecificExtension, + ... +} + + +S1ap-E-UTRAN-Trace-ID ::= OCTET STRING (SIZE (8)) + + +S1ap-TrafficLoadReductionIndication ::= INTEGER (1..99) + + +S1ap-TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + + +-- U + + +S1ap-UEAggregateMaximumBitrate ::= SEQUENCE { + uEaggregateMaximumBitRateDL S1ap-BitRate, + uEaggregateMaximumBitRateUL S1ap-BitRate, + iE-Extensions ProtocolExtensionContainer { {S1ap-UEAggregate-MaximumBitrates-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-UEAggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + + + +S1ap-UE-S1AP-IDs ::= CHOICE{ + uE-S1AP-ID-pair S1ap-UE-S1AP-ID-pair, + mME-UE-S1AP-ID S1ap-MME-UE-S1AP-ID, + ... +} + + +S1ap-UE-S1AP-ID-pair ::= SEQUENCE{ + mME-UE-S1AP-ID S1ap-MME-UE-S1AP-ID, + eNB-UE-S1AP-ID S1ap-ENB-UE-S1AP-ID, + iE-Extensions ProtocolExtensionContainer { {S1ap-UE-S1AP-ID-pair-ExtIEs} } OPTIONAL, + ... +} +S1ap-UE-S1AP-ID-pair-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +S1ap-UE-associatedLogicalS1-ConnectionItem ::= SEQUENCE { + mME-UE-S1AP-ID S1ap-MME-UE-S1AP-ID OPTIONAL, + eNB-UE-S1AP-ID S1ap-ENB-UE-S1AP-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { S1ap-UE-associatedLogicalS1-ConnectionItemExtIEs} } OPTIONAL, + ... +} + + + + +S1ap-UE-associatedLogicalS1-ConnectionItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-UEIdentityIndexValue ::= BIT STRING (SIZE (10)) + + +S1ap-UE-HistoryInformation ::= SEQUENCE (SIZE(1..s1ap-maxnoofCells)) OF S1ap-LastVisitedCell-Item + + +S1ap-UEPagingID ::= CHOICE { + s-TMSI S1ap-S-TMSI, + iMSI S1ap-IMSI, + ... + } + + +S1ap-UERadioCapability ::= OCTET STRING + + +S1ap-UESecurityCapabilities ::= SEQUENCE { + encryptionAlgorithms S1ap-EncryptionAlgorithms, + integrityProtectionAlgorithms S1ap-IntegrityProtectionAlgorithms, + iE-Extensions ProtocolExtensionContainer { { S1ap-UESecurityCapabilities-ExtIEs} } OPTIONAL, +... +} + + +S1ap-UESecurityCapabilities-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- V +-- W + + +S1ap-WarningAreaList ::= CHOICE { + cellIDList S1ap-ECGIList, + trackingAreaListforWarning S1ap-TAIListforWarning, + emergencyAreaIDList S1ap-EmergencyAreaIDList, + ... +} + + + + +S1ap-WarningType ::= OCTET STRING (SIZE (2)) + + +S1ap-WarningSecurityInfo ::= OCTET STRING (SIZE (50)) + + + + +S1ap-WarningMessageContents ::= OCTET STRING (SIZE(1..9600)) + + + + +-- X + + + + +S1ap-X2TNLConfigurationInfo ::= SEQUENCE { + eNBX2TransportLayerAddresses S1ap-ENBX2TLAs, + iE-Extensions ProtocolExtensionContainer { { S1ap-X2TNLConfigurationInfo-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-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 S1ap-ENBX2ExtTLAs PRESENCE optional}, + ... +} + + +S1ap-ENBX2ExtTLAs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofeNBX2ExtTLAs)) OF S1ap-ENBX2ExtTLA + + +S1ap-ENBX2ExtTLA ::= SEQUENCE { + iPsecTLA S1ap-TransportLayerAddress OPTIONAL, + gTPTLAa S1ap-ENBX2GTPTLAs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { S1ap-ENBX2ExtTLA-ExtIEs} } OPTIONAL, + ... +} + + +S1ap-ENBX2ExtTLA-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +S1ap-ENBX2GTPTLAs ::= SEQUENCE (SIZE(1.. s1ap-maxnoofeNBX2GTPTLAs)) OF S1ap-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 + + +S1ap-Criticality ::= ENUMERATED { reject, ignore, notify } + + +S1ap-Presence ::= ENUMERATED { optional, conditional, mandatory } + + +S1ap-PrivateIE-ID ::= CHOICE { + local INTEGER (0..65535), + global OBJECT IDENTIFIER +} + + +S1ap-ProcedureCode ::= INTEGER (0..255) + + +S1ap-ProtocolExtensionID ::= INTEGER (0..65535) + + +S1ap-ProtocolIE-ID ::= INTEGER (0..65535) + + +S1ap-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 + + +-- ************************************************************** +-- +-- S1ap-IE parameter types from other modules. +-- +-- ************************************************************** + + +IMPORTS + S1ap-ProcedureCode, + S1ap-ProtocolIE-ID + + +FROM S1AP-CommonDataTypes; + + + + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + + +id-HandoverPreparation S1ap-ProcedureCode ::= 0 +id-HandoverResourceAllocation S1ap-ProcedureCode ::= 1 +id-HandoverNotification S1ap-ProcedureCode ::= 2 +id-PathSwitchRequest S1ap-ProcedureCode ::= 3 +id-HandoverCancel S1ap-ProcedureCode ::= 4 +id-E-RABSetup S1ap-ProcedureCode ::= 5 +id-E-RABModify S1ap-ProcedureCode ::= 6 +id-E-RABRelease S1ap-ProcedureCode ::= 7 +id-E-RABReleaseIndication S1ap-ProcedureCode ::= 8 +id-InitialContextSetup S1ap-ProcedureCode ::= 9 +id-Paging S1ap-ProcedureCode ::= 10 +id-downlinkNASTransport S1ap-ProcedureCode ::= 11 +id-initialUEMessage S1ap-ProcedureCode ::= 12 +id-uplinkNASTransport S1ap-ProcedureCode ::= 13 +id-Reset S1ap-ProcedureCode::= 14 +id-ErrorIndication S1ap-ProcedureCode ::= 15 +id-NASNonDeliveryIndication S1ap-ProcedureCode ::= 16 +id-S1Setup S1ap-ProcedureCode ::= 17 +id-UEContextReleaseRequest S1ap-ProcedureCode ::= 18 +id-DownlinkS1cdma2000tunneling S1ap-ProcedureCode ::= 19 +id-UplinkS1cdma2000tunneling S1ap-ProcedureCode ::= 20 +id-UEContextModification S1ap-ProcedureCode ::= 21 +id-UECapabilityInfoIndication S1ap-ProcedureCode ::= 22 +id-UEContextRelease S1ap-ProcedureCode ::= 23 +id-eNBStatusTransfer S1ap-ProcedureCode ::= 24 +id-MMEStatusTransfer S1ap-ProcedureCode ::= 25 +id-DeactivateTrace S1ap-ProcedureCode ::= 26 +id-TraceStart S1ap-ProcedureCode ::= 27 +id-TraceFailureIndication S1ap-ProcedureCode ::= 28 +id-ENBConfigurationUpdate S1ap-ProcedureCode ::= 29 +id-MMEConfigurationUpdate S1ap-ProcedureCode ::= 30 +id-LocationReportingControl S1ap-ProcedureCode ::= 31 +id-LocationReportingFailureIndication S1ap-ProcedureCode ::= 32 +id-LocationReport S1ap-ProcedureCode ::= 33 +id-OverloadStart S1ap-ProcedureCode ::= 34 +id-OverloadStop S1ap-ProcedureCode ::= 35 +id-WriteReplaceWarning S1ap-ProcedureCode ::= 36 +id-eNBDirectInformationTransfer S1ap-ProcedureCode ::= 37 +id-MMEDirectInformationTransfer S1ap-ProcedureCode ::= 38 +id-PrivateMessage S1ap-ProcedureCode ::= 39 +id-eNBConfigurationTransfer S1ap-ProcedureCode ::= 40 +id-MMEConfigurationTransfer S1ap-ProcedureCode ::= 41 +id-CellTrafficTrace S1ap-ProcedureCode ::= 42 +id-Kill S1ap-ProcedureCode ::= 43 +id-downlinkUEAssociatedLPPaTransport S1ap-ProcedureCode ::= 44 +id-uplinkUEAssociatedLPPaTransport S1ap-ProcedureCode ::= 45 +id-downlinkNonUEAssociatedLPPaTransport S1ap-ProcedureCode ::= 46 +id-uplinkNonUEAssociatedLPPaTransport S1ap-ProcedureCode ::= 47 + + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + + +s1ap-maxPrivateIEs INTEGER ::= 65535 +s1ap-maxProtocolExtensions INTEGER ::= 65535 +s1ap-maxProtocolIEs INTEGER ::= 65535 +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + + +s1ap-maxNrOfCSGs INTEGER ::= 256 +s1ap-maxNrOfE-RABs INTEGER ::= 256 +s1ap-maxnoofTAIs INTEGER ::= 256 +s1ap-maxnoofTACs INTEGER ::= 256 +s1ap-maxNrOfErrors INTEGER ::= 256 +s1ap-maxnoofBPLMNs INTEGER ::= 6 +s1ap-maxnoofPLMNsPerMME INTEGER ::= 32 +s1ap-maxnoofEPLMNs INTEGER ::= 15 +s1ap-maxnoofEPLMNsPlusOne INTEGER ::= 16 +s1ap-maxnoofForbLACs INTEGER ::= 4096 +s1ap-maxnoofForbTACs INTEGER ::= 4096 +s1ap-maxNrOfIndividualS1ConnectionsToReset INTEGER ::= 256 +s1ap-maxnoofCells INTEGER ::= 16 +s1ap-maxnoofTAIforWarning INTEGER ::= 65535 +s1ap-maxnoofCellID INTEGER ::= 65535 +s1ap-maxnoofEmergencyAreaID INTEGER ::= 65535 +s1ap-maxnoofCellinTAI INTEGER ::= 65535 +s1ap-maxnoofCellinEAI INTEGER ::= 65535 +s1ap-maxnoofeNBX2TLAs INTEGER ::= 2 +s1ap-maxnoofeNBX2ExtTLAs INTEGER ::= 16 +s1ap-maxnoofeNBX2GTPTLAs INTEGER ::= 16 +s1ap-maxnoofRATs INTEGER ::= 8 +s1ap-maxnoofGroupIDs INTEGER ::= 65535 +s1ap-maxnoofMMECs INTEGER ::= 256 +s1ap-maxnoofCellIDforMDT INTEGER ::= 32 +s1ap-maxnoofTAforMDT INTEGER ::= 8 + + + + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + + +id-MME-UE-S1AP-ID S1ap-ProtocolIE-ID ::= 0 +id-HandoverType S1ap-ProtocolIE-ID ::= 1 +id-Cause S1ap-ProtocolIE-ID ::= 2 +id-SourceID S1ap-ProtocolIE-ID ::= 3 +id-TargetID S1ap-ProtocolIE-ID ::= 4 +id-eNB-UE-S1AP-ID S1ap-ProtocolIE-ID ::= 8 +id-E-RABSubjecttoDataForwardingList S1ap-ProtocolIE-ID ::= 12 +id-E-RABtoReleaseListHOCmd S1ap-ProtocolIE-ID ::= 13 +id-E-RABDataForwardingItem S1ap-ProtocolIE-ID ::= 14 +id-E-RABReleaseItemBearerRelComp S1ap-ProtocolIE-ID ::= 15 +id-E-RABToBeSetupListBearerSUReq S1ap-ProtocolIE-ID ::= 16 +id-E-RABToBeSetupItemBearerSUReq S1ap-ProtocolIE-ID ::= 17 +id-E-RABAdmittedList S1ap-ProtocolIE-ID ::= 18 +id-E-RABFailedToSetupListHOReqAck S1ap-ProtocolIE-ID ::= 19 +id-E-RABAdmittedItem S1ap-ProtocolIE-ID ::= 20 +id-E-RABFailedtoSetupItemHOReqAck S1ap-ProtocolIE-ID ::= 21 +id-E-RABToBeSwitchedDLList S1ap-ProtocolIE-ID ::= 22 +id-E-RABToBeSwitchedDLItem S1ap-ProtocolIE-ID ::= 23 +id-E-RABToBeSetupListCtxtSUReq S1ap-ProtocolIE-ID ::= 24 +id-TraceActivation S1ap-ProtocolIE-ID ::= 25 +id-NAS-PDU S1ap-ProtocolIE-ID ::= 26 +id-E-RABToBeSetupItemHOReq S1ap-ProtocolIE-ID ::= 27 +id-E-RABSetupListBearerSURes S1ap-ProtocolIE-ID ::= 28 +id-E-RABFailedToSetupListBearerSURes S1ap-ProtocolIE-ID ::= 29 +id-E-RABToBeModifiedListBearerModReq S1ap-ProtocolIE-ID ::= 30 +id-E-RABModifyListBearerModRes S1ap-ProtocolIE-ID ::= 31 +id-E-RABFailedToModifyList S1ap-ProtocolIE-ID ::= 32 +id-E-RABToBeReleasedList S1ap-ProtocolIE-ID ::= 33 +id-E-RABFailedToReleaseList S1ap-ProtocolIE-ID ::= 34 +id-E-RABItem S1ap-ProtocolIE-ID ::= 35 +id-E-RABToBeModifiedItemBearerModReq S1ap-ProtocolIE-ID ::= 36 +id-E-RABModifyItemBearerModRes S1ap-ProtocolIE-ID ::= 37 +id-E-RABReleaseItem S1ap-ProtocolIE-ID ::= 38 +id-E-RABSetupItemBearerSURes S1ap-ProtocolIE-ID ::= 39 +id-SecurityContext S1ap-ProtocolIE-ID ::= 40 +id-HandoverRestrictionList S1ap-ProtocolIE-ID ::= 41 +id-UEPagingID S1ap-ProtocolIE-ID ::= 43 +id-pagingDRX S1ap-ProtocolIE-ID ::= 44 +id-TAIList S1ap-ProtocolIE-ID ::= 46 +id-TAIItem S1ap-ProtocolIE-ID ::= 47 +id-E-RABFailedToSetupListCtxtSURes S1ap-ProtocolIE-ID ::= 48 +id-E-RABReleaseItemHOCmd S1ap-ProtocolIE-ID ::= 49 +id-E-RABSetupItemCtxtSURes S1ap-ProtocolIE-ID ::= 50 +id-E-RABSetupListCtxtSURes S1ap-ProtocolIE-ID ::= 51 +id-E-RABToBeSetupItemCtxtSUReq S1ap-ProtocolIE-ID ::= 52 +id-E-RABToBeSetupListHOReq S1ap-ProtocolIE-ID ::= 53 +id-GERANtoLTEHOInformationRes S1ap-ProtocolIE-ID ::= 55 +id-UTRANtoLTEHOInformationRes S1ap-ProtocolIE-ID ::= 57 +id-CriticalityDiagnostics S1ap-ProtocolIE-ID ::= 58 +id-Global-ENB-ID S1ap-ProtocolIE-ID ::= 59 +id-eNBname S1ap-ProtocolIE-ID ::= 60 +id-MMEname S1ap-ProtocolIE-ID ::= 61 +id-ServedPLMNs S1ap-ProtocolIE-ID ::= 63 +id-SupportedTAs S1ap-ProtocolIE-ID ::= 64 +id-TimeToWait S1ap-ProtocolIE-ID ::= 65 +id-uEaggregateMaximumBitrate S1ap-ProtocolIE-ID ::= 66 +id-TAI S1ap-ProtocolIE-ID ::= 67 +id-E-RABReleaseListBearerRelComp S1ap-ProtocolIE-ID ::= 69 +id-cdma2000PDU S1ap-ProtocolIE-ID ::= 70 +id-cdma2000RATType S1ap-ProtocolIE-ID ::= 71 +id-cdma2000SectorID S1ap-ProtocolIE-ID ::= 72 +id-SecurityKey S1ap-ProtocolIE-ID ::= 73 +id-UERadioCapability S1ap-ProtocolIE-ID ::= 74 +id-GUMMEI-ID S1ap-ProtocolIE-ID ::= 75 +id-E-RABInformationListItem S1ap-ProtocolIE-ID ::= 78 +id-Direct-Forwarding-Path-Availability S1ap-ProtocolIE-ID ::= 79 +id-UEIdentityIndexValue S1ap-ProtocolIE-ID ::= 80 +id-cdma2000HOStatus S1ap-ProtocolIE-ID ::= 83 +id-cdma2000HORequiredIndication S1ap-ProtocolIE-ID ::= 84 +id-E-UTRAN-Trace-ID S1ap-ProtocolIE-ID ::= 86 +id-RelativeMMECapacity S1ap-ProtocolIE-ID ::= 87 +id-SourceMME-UE-S1AP-ID S1ap-ProtocolIE-ID ::= 88 +id-Bearers-SubjectToStatusTransfer-Item S1ap-ProtocolIE-ID ::= 89 +id-eNB-StatusTransfer-TransparentContainer S1ap-ProtocolIE-ID ::= 90 +id-UE-associatedLogicalS1-ConnectionItem S1ap-ProtocolIE-ID ::= 91 +id-ResetType S1ap-ProtocolIE-ID ::= 92 +id-UE-associatedLogicalS1-ConnectionListResAck S1ap-ProtocolIE-ID ::= 93 +id-E-RABToBeSwitchedULItem S1ap-ProtocolIE-ID ::= 94 +id-E-RABToBeSwitchedULList S1ap-ProtocolIE-ID ::= 95 +id-S-TMSI S1ap-ProtocolIE-ID ::= 96 +id-cdma2000OneXRAND S1ap-ProtocolIE-ID ::= 97 +id-RequestType S1ap-ProtocolIE-ID ::= 98 +id-UE-S1AP-IDs S1ap-ProtocolIE-ID ::= 99 +id-EUTRAN-CGI S1ap-ProtocolIE-ID ::= 100 +id-OverloadResponse S1ap-ProtocolIE-ID ::= 101 +id-cdma2000OneXSRVCCInfo S1ap-ProtocolIE-ID ::= 102 +id-E-RABFailedToBeReleasedList S1ap-ProtocolIE-ID ::= 103 +id-Source-ToTarget-TransparentContainer S1ap-ProtocolIE-ID ::= 104 +id-ServedGUMMEIs S1ap-ProtocolIE-ID ::= 105 +id-SubscriberProfileIDforRFP S1ap-ProtocolIE-ID ::= 106 +id-UESecurityCapabilities S1ap-ProtocolIE-ID ::= 107 +id-CSFallbackIndicator S1ap-ProtocolIE-ID ::= 108 +id-CNDomain S1ap-ProtocolIE-ID ::= 109 +id-E-RABReleasedList S1ap-ProtocolIE-ID ::= 110 +id-MessageIdentifier S1ap-ProtocolIE-ID ::= 111 +id-SerialNumber S1ap-ProtocolIE-ID ::= 112 +id-WarningAreaList S1ap-ProtocolIE-ID ::= 113 +id-RepetitionPeriod S1ap-ProtocolIE-ID ::= 114 +id-NumberofBroadcastRequest S1ap-ProtocolIE-ID ::= 115 +id-WarningType S1ap-ProtocolIE-ID ::= 116 +id-WarningSecurityInfo S1ap-ProtocolIE-ID ::= 117 +id-DataCodingScheme S1ap-ProtocolIE-ID ::= 118 +id-WarningMessageContents S1ap-ProtocolIE-ID ::= 119 +id-BroadcastCompletedAreaList S1ap-ProtocolIE-ID ::= 120 +id-Inter-SystemInformationTransferTypeEDT S1ap-ProtocolIE-ID ::= 121 +id-Inter-SystemInformationTransferTypeMDT S1ap-ProtocolIE-ID ::= 122 +id-Target-ToSource-TransparentContainer S1ap-ProtocolIE-ID ::= 123 +id-SRVCCOperationPossible S1ap-ProtocolIE-ID ::= 124 +id-SRVCCHOIndication S1ap-ProtocolIE-ID ::= 125 +id-NAS-DownlinkCount S1ap-ProtocolIE-ID ::= 126 +id-CSG-Id S1ap-ProtocolIE-ID ::= 127 +id-CSG-IdList S1ap-ProtocolIE-ID ::= 128 +id-SONConfigurationTransferECT S1ap-ProtocolIE-ID ::= 129 +id-SONConfigurationTransferMCT S1ap-ProtocolIE-ID ::= 130 +id-TraceCollectionEntityIPAddress S1ap-ProtocolIE-ID ::= 131 +id-MSClassmark2 S1ap-ProtocolIE-ID ::= 132 +id-MSClassmark3 S1ap-ProtocolIE-ID ::= 133 +id-RRC-Establishment-Cause S1ap-ProtocolIE-ID ::= 134 +id-NASSecurityParametersfromE-UTRAN S1ap-ProtocolIE-ID ::= 135 +id-NASSecurityParameterstoE-UTRAN S1ap-ProtocolIE-ID ::= 136 +id-DefaultPagingDRX S1ap-ProtocolIE-ID ::= 137 +id-Source-ToTarget-TransparentContainer-Secondary S1ap-ProtocolIE-ID ::= 138 +id-Target-ToSource-TransparentContainer-Secondary S1ap-ProtocolIE-ID ::= 139 +id-EUTRANRoundTripDelayEstimationInfo S1ap-ProtocolIE-ID ::= 140 +id-BroadcastCancelledAreaList S1ap-ProtocolIE-ID ::= 141 +id-ConcurrentWarningMessageIndicator S1ap-ProtocolIE-ID ::= 142 +id-Data-Forwarding-Not-Possible S1ap-ProtocolIE-ID ::= 143 +id-ExtendedRepetitionPeriod S1ap-ProtocolIE-ID ::= 144 +id-CellAccessMode S1ap-ProtocolIE-ID ::= 145 +id-CSGMembershipStatus S1ap-ProtocolIE-ID ::= 146 +id-LPPa-PDU S1ap-ProtocolIE-ID ::= 147 +id-Routing-ID S1ap-ProtocolIE-ID ::= 148 +id-Time-Synchronization-Info S1ap-ProtocolIE-ID ::= 149 +id-PS-ServiceNotAvailable S1ap-ProtocolIE-ID ::= 150 +id-PagingPriority S1ap-ProtocolIE-ID ::= 151 +id-x2TNLConfigurationInfo S1ap-ProtocolIE-ID ::= 152 +id-eNBX2ExtendedTransportLayerAddresses S1ap-ProtocolIE-ID ::= 153 +id-GUMMEIList S1ap-ProtocolIE-ID ::= 154 +id-GW-S1ap-TransportLayerAddress S1ap-ProtocolIE-ID ::= 155 +id-Correlation-ID S1ap-ProtocolIE-ID ::= 156 +id-SourceMME-S1ap-GUMMEI S1ap-ProtocolIE-ID ::= 157 +id-MME-UE-S1AP-ID-2 S1ap-ProtocolIE-ID ::= 158 +id-RegisteredLAI S1ap-ProtocolIE-ID ::= 159 +id-RelayNode-Indicator S1ap-ProtocolIE-ID ::= 160 +id-TrafficLoadReductionIndication S1ap-ProtocolIE-ID ::= 161 +id-MDTConfiguration S1ap-ProtocolIE-ID ::= 162 +id-MMERelaySupportIndicator S1ap-ProtocolIE-ID ::= 163 +id-GWContextReleaseIndication S1ap-ProtocolIE-ID ::= 164 +id-ManagementBasedMDTAllowed S1ap-ProtocolIE-ID ::= 165 +id-PrivacyIndicator S1ap-ProtocolIE-ID ::= 166 + + +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 + + +-- ************************************************************** +-- +-- S1ap-IE parameter types from other modules. +-- +-- ************************************************************** + + +IMPORTS + S1ap-Criticality, + S1ap-Presence, + S1ap-PrivateIE-ID, + S1ap-ProtocolExtensionID, + S1ap-ProtocolIE-ID +FROM S1AP-CommonDataTypes + + + s1ap-maxPrivateIEs, + s1ap-maxProtocolExtensions, + s1ap-maxProtocolIEs, + s1ap-maxNrOfE-RABs +FROM S1AP-Constants; + + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + + +S1AP-PROTOCOL-IES ::= CLASS { + &id S1ap-ProtocolIE-ID UNIQUE, + &criticality S1ap-Criticality, + &Value, + &presence S1ap-Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + + +S1AP-PROTOCOL-IES-PAIR ::= CLASS { + &id S1ap-ProtocolIE-ID UNIQUE, + &firstCriticality S1ap-Criticality, + &FirstValue, + &secondCriticality S1ap-Criticality, + &SecondValue, + &presence S1ap-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 S1ap-ProtocolExtensionID UNIQUE, + &criticality S1ap-Criticality, + &Extension, + &presence S1ap-Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + + +-- ************************************************************** +-- +-- Class Definition for Private IEs +-- +-- ************************************************************** + + +S1AP-PRIVATE-IES ::= CLASS { + &id S1ap-PrivateIE-ID, + &criticality S1ap-Criticality, + &Value, + &presence S1ap-Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + + +ProtocolIE-Container {S1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..s1ap-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 S1ap-IE Pairs +-- +-- ************************************************************** + + +ProtocolIE-ContainerPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (0..s1ap-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 S1ap-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..s1ap-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.. s1ap-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 + + +-- ************************************************************** +-- +-- for S1ap-S1ap-IE +-- +-- ************************************************************** + +S1AP-PDU { + itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) + eps-Access (21) modules (3) s1ap (1) version1 (1) +} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + S1ap-Criticality, + S1ap-ProtocolIE-ID + +FROM S1AP-CommonDataTypes; + +S1ap-IE ::= SEQUENCE { + id S1ap-ProtocolIE-ID, + criticality S1ap-Criticality, + value ANY +} + +END